for i in {1..5};do
echo $i/5
done
将回显
1/5
2/5
3/5
4/5
5/5
是否可以在每次迭代时覆盖以前的回显/打印线?该程序应该回显1/5
然后2/5
而不是1/5
然后3/5
等等。在程序结束时,只有一行包含5/5
离开。
答案 0 :(得分:3)
这可以使用回车\r
:
for i in {1..5}; do
printf "%d/5\r" "$i"
sleep 1
done
我添加了对sleep
的通话,以便您可以看到终端更新。
请注意,您需要在末尾打印换行符,以避免终端覆盖输出。
答案 1 :(得分:2)
要覆盖某一行,请使用回车符\r
,并且不要换行。
尝试,例如:
for i in {1..5}; do printf '\r%s/5' $i; sleep 0.1; done
添加了sleep
命令,以便您在重新更新之前有时间查看数字。