我想使用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