Wann benötigen Sie „…|while read…“?

Wann benötigen Sie „…|while read…“?

Ich habe ein Video-Tutorial zum Paste-Befehl gesehen, in dem drei Dateien foo,bar,baz horizontal mit einem „+“-Zeichen dazwischen verbunden waren.

cat foo
51
33
67

cat bar
10
1
13

cat baz
7
100
15

Also verwendete er einen Paste-Befehl, um aus jeder Zeile eine ganze Addition zu machen, und leitete diese in eine While-Schleife weiter, die jede Zeile durchläuft und in den BC-Rechner einfügt:

paste -d+ foo bar baz | while read bla;do echo $bla|bc;done

Ich war verwirrt, warum er die komplizierte while-Schleife verwendet hat, da

paste -d+ foo bar baz|bc 

hat auch funktioniert,

aber das brachte mich zum Nachdenken„Gibt es Situationen, in denen ein Weiterleiten in die While-Schleife sinnvoll ist oder sogar die einzige Möglichkeit darstellt, etwas zu erreichen?“

Antwort1

In diesem Fall ging es nur darum, den aktuellen Fortschritt auszugeben, und zwar Zeile für Zeile. Das Weiterleiten von While-Schleifen ist manchmal wirklich nützlich, z. B. um einen Fortschrittsbalken anzuzeigen. Beispiel für einen Fortschrittsbalken:

for i in $(seq 1 100)
do
sleep 0.1 
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0

verwandte Informationen