2014-05-02 52 views
0

考慮以下腳本停止和啓動tomcat:bash:如何在命令退出後在前一行打印OK狀態?

#!/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了。我怎樣才能做到這一點?

+0

哪裏是消息說明_正在發生什麼? –

+0

echo ---關閉Tomcat ... – agent154

+0

完成後我想將它改爲「echo ---關閉Tomcat ... [確定]」..不是「echo ---關閉Tomcat ..」 。\ n [確定]「 – agent154

回答

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

-n抑制回聲結束處的換行符。請注意,如果Tomcat服務器發出任何信息,它將在三重點之後開始。


正如在評論中指出,應考慮:

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

(雖然你可以離開第二爲echo OK,它似乎更是一致的。)

+1

另外'printf'%s'」---關閉向下Tomcat ...「(這可能更便攜)。 –

+0

確實:使用'printf'可以說更好。 'echo'的問題是做不同的方式。系統V shell使用'echo「---關閉Tomcat ... \ c」';第七版Bourne shell(實際上是'echo'二進制文件)使用了'-n'。不同版本的'echo'對它給出的字符串做了不同的解釋量和類型。在某種程度上,POSIX對'printf'命令進行了標準化以避免使用'echo'的問題。另見[Bloated'echo'命令](http://stackoverflow.com/questions/3290683/bloated-echo-command)。 –

+0

同意,[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)明確指出,在論證中使用'echo'是一個黑洞,錯誤,壞主意的旅程。黑洞很酷,但你不想被一個人吃掉。 –

相關問題