我看到一个paste命令的视频教程,其中三个文件foo,bar,baz是水平连接的,中间有一个“+”号。
cat foo
51
33
67
cat bar
10
1
13
cat baz
7
100
15
因此,他使用粘贴命令将每一行作为一个完整的加法,并将其通过管道传输到一个 while 循环中,该循环遍历每一行并将其放入 bc 计算器中:
paste -d+ foo bar baz | while read bla;do echo $bla|bc;done
我很困惑为什么他使用复杂的 while 循环
paste -d+ foo bar baz|bc
也工作过,
但这让我觉得“在某些情况下,管道进入 while 循环是否有意义,甚至是实现某些目标的唯一方法?”
答案1
在本例中,它只是用于逐行输出当前进度。管道 while 循环有时非常有用,例如显示进度条。进度条示例:
for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0