2017-05-06 137 views
0

的輸出我需要檢查的apachectl configtest輸出在bash腳本,並重新啓動,如果一切都看起來不錯,沒有如果VAR包含「語法OK」輸出命令到屏幕擊:檢查命令

var =sudo apachectl configtest 

然後

sudo apachectl graceful 

怎麼辦?

+0

我並不完全確定「輸出到屏幕上」的含義,但如果手動運行腳本,則可以看到它在終端中運行的命令的輸出。您也可以使用'>'將命令輸出保存到文件中,如下所示:'[command]> [filepath]' – ifconfig

+4

'apachectl graceful'根據[documentation](https:// httpd)在重新啓動前自動運行configtest .apache.org /文檔/電流/程序/ apachectl.html)。 –

+0

如果configtest發現問題,它會失敗嗎? – dev810vm

回答

0

bash的語法,你在你的第一個命令後,大概是「命令替換」:

VAR=$(sudo apachectl configtest)

VAR將包含命令行的輸出。

但是,如果你只是想知道,如果輸出包含「語法OK」,像這樣做:

sudo apachectl configtest | grep -q "Syntax OK" && proceed || handle-error

其中proceedhandle-error是你的職責是處理你的確定和錯誤的情況下,分別。

(注的grep的-q選項隱藏apachectl命令的輸出。)

0

由於@slm說的link,您可以使用-q安靜。這樣它就不會在屏幕上輸出命令。確保變量,'='和@William Pursell所說的命令之間沒有空格here。在那之後測試你的變量是否包含「Syntax OK」。下面的代碼片段可以做到這一點。

var1=$(sudo apachectl configtest) 

if echo $var1 | grep -q "Syntax OK"; then 
    sudo apachectl graceful 
fi