检查nginx配置测试是否成功,作为bash-if的条件



我想使用nginx -t检查nginx配置的有效性,并将其作为bash脚本的条件。

if [[ $(nginx -t) = *"successful"* ]]; then 
echo "success"; 
else 
echo "failure"; 
fi

nginx -t的输出包含successful时,bash打印failure。我做错了什么?

编辑:我不想通过退出代码进行检查,而是通过字符串输出进行检查。

解决方案:

if [[ $(nginx -t 2>&1) = *"successful"* ]]; then 
echo "success"; 
else 
echo "failure"; 
fi
```

下面是我的(工作(脚本:

nginx -t >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "success"
else
echo "failure"
fi

我做错了什么?

您希望在stdout上打印该消息。它打印在stderr上。将stderr重定向到stdout以捕获消息。

如果您想捕获命令的stderr和stdout,并检查其退出状态,请执行:

if out=$(nginx -t 2>&1); do
echo "success"
else
echo "failure, because: $out"
fi

最新更新