继续在同一行输出

28 bash

想要通过在任务完成时在最后一行末尾打印[确定]来做一个奇特的效果.

明白啦:

echo "$0: Starting backup process in '$backupdir'... " 
sleep 3
echo '[OK]'
Run Code Online (Sandbox Code Playgroud)

我尝试不同的东西在第一回波的终点,在第二喜欢的开始\r,\c,\,GOOGLE了它...没有好.

我希望它输出这个:

./backup.sh: Starting backup process in '/backup'...

...... 3秒后,添加[OK]:

./backup.sh: Starting backup process in '/backup'... [OK]

谢谢,

Joh*_*han 50

使用该-n选项可以在结尾处跳过打印换行符.更多echo文档参考.

所以你可以这样做:

echo -n "$0: Starting backup process in '$backupdir'... " 
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 14

使用更便携 printf

  • echo的一些实现使用`-n`标志来抑制换行; 其他人在字符串的末尾使用`\ c`.如果你在脚本中使用一个,而echo期望另一个,你的输出前会得到"-n",或者最后得到"\ c".但是`printf"%s""$ 0:..."`将始终按预期工作. (5认同)
  • @Gordon Davisson @ ghostdog74,不能同意,甚至POSIX标准都说"鼓励新应用程序使用printf而不是echo.".+1 (3认同)