我在一行中编写了一些代码,用于一个简单的倒计时器:
i=0; echo -en "Enter timer length (seconds): "; read num; echo "Timer starting...now"; sleep 1; for i in $(seq $num 1); do echo -ne "$i second(s) remaining"\\r; sleep 1; done; echo -e "\033[34mTimer Finished\033[0m";
代码大部分都有效,但是输出出现了一些奇怪的情况。 我期待:
Timer Finished
在该过程的最后,但是,我得到的是:Timer Finishedmaining
。
我尝试过以不同的方式格式化字符串,更改“echo”选项,删除终端转义符......我不知所措。
如果在每次输出
...seconds remaining
后将光标设置到行首,然后打印一条比该短的消息,则剩余的文本明显可见。<ESC>[K
i=0
echo -en "Enter timer length (seconds): "
read num; echo "Timer starting...now"
sleep 1
for i in $(seq $num 1); do
echo -ne "$i second(s) remaining\r"
sleep 1
done
echo -e "\033[34mTimer Finished\033[0m\033[K"