Ich könnte das in jeder anderen Sprache machen, aber mit Bash habe ich weit und weit geschaut und konnte die Antwort nicht finden.
Ich muss $line
in einem Skript manuell erhöhen. Beispiel:
Wenn Sie bemerken, dass foo_loop
jedes Mal, wenn $line
iteriert, gleich bleibt. Ich muss $line
dort iterieren und sicherstellen, dass die ursprüngliche for-Schleife nur die Anzahl der Zeilen in der Datei ausführt.
Ich habe darüber nachgedacht, die Anzahl der Zeilen in der Datei mit einer anderen Schleife zu ermitteln und die Zeilenvariable innerhalb der inneren Schleife von foo()
zu wiederholen.
Irgendwelche Ideen?
BEARBEITEN:
Entschuldige, dass du so vage bist.
Hier gehen wir:
Ich versuche, einen Teil meines Codes mehrfach auszuführen (parallele Ausführung)
%Vor% Dieser Code funktioniert gut, weil foo
nur den Wert der Zeile einnimmt; aber wenn ich das machen wollte:
$line
ist während der while-Schleife gleich. Ich brauche es mit der while
-Schleife zu ändern, und fahre fort, wenn es wieder in for
geht. Beispiel:
Wenn der Inhalt der Datei
war %Vor%Die Ausgabe des Beispielprogramms wäre (wenn die maximal zulässige Anzahl 3 war)
%Vor%Wo ich es haben möchte
%Vor%Ich hoffe, das ist besser. Ich gebe mein Bestes, um mein Problem zu erklären.
Lange Rede kurzer Sinn, while read line; do _____ ; done
Stellen Sie dann sicher, dass Sie um "$ line" doppelte Anführungszeichen haben, damit ein Parameter nicht durch Leerzeichen begrenzt wird.
Beispiel:
%Vor%Zweites Beispiel # Fügen Sie .gz zu jeder Datei im aktuellen Verzeichnis hinzu: # Wenn Dateien Leerzeichen enthalten, gibt der Befehl mv für diese Zeile einen Fehler zurück.
%Vor%Sie sollten Follow-ups als Änderungen an Ihrer Frage oder in Kommentaren und nicht als Antwort veröffentlichen.
Diese Struktur:
%Vor%Erträge:
%Vor%Während dieser:
%Vor%Erträge:
%Vor%