Я видел видеоурок по команде paste, в котором три файла foo, bar, baz были соединены по горизонтали со знаком «+» между ними.
cat foo
51
33
67
cat bar
10
1
13
cat baz
7
100
15
Итак, он использовал команду paste, чтобы сделать каждую строку целым дополнением, и передал это в цикл while, который проходит через каждую строку и помещает ее в калькулятор bc:
paste -d+ foo bar baz | while read bla;do echo $bla|bc;done
Я был сбит с толку, почему он использовал сложное while -loop, поскольку
paste -d+ foo bar baz|bc
также работал,
однако это заставило меня задуматься «Существуют ли ситуации, в которых подключение к циклу while имеет смысл или даже является единственным способом чего-то достичь?»
В данном случае это было просто для вывода того, что происходит в данный момент, и эта строка за строкой. Конвейерные циклы while иногда очень полезны, например. отображение индикатора выполнения. Пример индикатора выполнения:
for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0