Echo 正在附加上一个 echo 命令中的字符

问题描述 投票:0回答:1

我在一行中编写了一些代码,用于一个简单的倒计时器:

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”选项,删除终端转义符......我不知所措。

bash shell
1个回答
0
投票

如果在每次输出

...seconds remaining
后将光标设置到行首,然后打印一条比该短的消息,则剩余的文本明显可见。
但您可以使用另一个 ansi 转义码删除文本
<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"
© www.soinside.com 2019 - 2024. All rights reserved.