bash:如何在命令退出后在上一行打印OK状态?

时间:2014-05-02 16:13:57

标签: bash

考虑以下脚本来停止和启动tomcat:

#!/bin/bash

# Shutdown tomcat and delete all the logs
echo --- Shutting down Tomcat...
sh /opt/tomcat/bin/shutdown.sh -force &> /dev/null
rm -f /opt/tomcat/logs/* &> /dev/null
echo OK

# Startup tomcat
sh /opt/tomcat/bin/startup.sh &> /dev/null

echo --- Starting up Tomcat...
until [ "`curl --silent --show-error --connect-timeout 1 -I http://localhost:8080 | grep 'Coyote'`" != "" ];
do
  sleep 10
done

echo OK

我希望能够做的就是在显示正在发生的消息的同一行显示OK。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

echo -n "--- Shutting down Tomcat..."
...
echo OK

-n在回声结束时抑制换行符。请注意,如果Tomcat服务器发出任何信息,它将在三点之后开始。


正如评论中所指出的,你应该考虑:

printf "--- Shutting down Tomcat..."
...
printf "OK\n"

(虽然您可以将第二个留给echo OK,但最好保持一致。)