Bash:检查命令的输出

时间:2017-05-06 02:01:22

标签: linux bash

我需要在bash脚本中检查apachectl configtest的输出,如果一切看起来都很好而没有将命令输出到屏幕,则重新启动

var =sudo apachectl configtest

如果var包含"语法OK"然后

sudo apachectl graceful

怎么做?

2 个答案:

答案 0 :(得分:5)

我知道这是旧线程,问题不适合该特定站点。无论如何,寻找相同的问题,该页面被显示为第一个搜索结果。所以,我在这里发布我的最终解决方案,以供参考。

configtestResult=$(sudo apachectl configtest 2>&1)

if [ "$configtestResult" != "Syntax OK" ]; then
    echo "apachectl configtest returned the error: $configtestResult";
    exit 1;
else
    sudo apachectl graceful
fi

This thread包含有关捕获configtest输出的线索。

答案 1 :(得分:1)

正如@slm在link上所说,你可以使用-q来安静。这样它就不会在屏幕上输出命令。确保变量,'='和命令之间没有空格,如@William Pursell所说here。在该测试之后,如果您的变量包含“语法OK”。以下代码片段可以做到这一点。

var1=$(sudo apachectl configtest)

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