2017-05-06 61 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