Führen Sie den Befehl für jede Zeile einer Datei in Bash aus, wobei Sie die Zeilen als Standardeingabe übergeben

1148
Tgr

Wie gebe ich eine Zeile zeilenweise an eine Befehlszeile weiter (dh rufe den Befehl für jede Zeile auf)?

xargs funktioniert nicht, da die Zeilen als Argumente und nicht als Standardeingabe übergeben werden.

Der spezielle Fall, in dem dies auftrat, war das Decodieren einer Datei, deren Zeilen Base64-codierte Zeichenfolgen waren.

3

1 Antwort auf die Frage

8
Tgr

Kann mit einer while-Schleife gemacht werden:

produce | while IFS= read -r line; do echo "$line" | process; done | consume 

(aus irgendeinem beliebigen produce, process, consumeBefehle, die alle verwenden Standard Eingabe / Ausgabe), aber meh. Es muss einen eleganteren Weg geben, dies zu tun.

(Semikolon ist nach "Zeile", nicht nach "do") Campa vor 9 Jahren 0