检查nginx配置测试是否成功,作为bash的条件,如果
我想使用检查nginx配置测试是否成功,作为bash的条件,如果,bash,nginx,Bash,Nginx,我想使用nginx-t作为bash脚本的条件来检查nginx配置的有效性 if [[ $(nginx -t) = *"successful"* ]]; then echo "success"; else echo "failure"; fi 当nginx-t的输出包含successful时,bash打印failure。我做错了什么 编辑:我不想按退出代码检查,而是按字符串输出检查 解决方案: if [[ $(nginx -t
nginx-t
作为bash脚本的条件来检查nginx配置的有效性
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
我做错了什么
您希望邮件打印在标准输出上。它印在标准纸上。将stderr重定向到stdout以捕获消息
如果要捕获命令的stderr和stdout并检查其退出状态,请执行以下操作:
if out=$(nginx -t 2>&1); do
echo "success"
else
echo "failure, because: $out"
fi
谢谢,虽然这会起作用,但我不想使用命令的退出状态,因为如果我想引入错误处理,这可能会进一步证明是有问题的,因为它忽略了输出的信息。
因为如果我想引入错误处理,这可能会进一步证明是有问题的。我不理解。处理退出状态是错误处理。@IvanShatsky docmd;如果[$?…
是一种反模式。不要这样做-如果可能,不要使用$?
。只要如果nginx-t>/dev/null 2>&1;那么…
@KamilCuksaying erro handling意味着我想根据nginx错误字符串的信息做一些事情。一些退出代码不包含这些信息,jhi不知道stderr。但是我不想检查退出状态。我想按输出字符串的内容进行保存。基本上只是将nginx-t
替换为nginx-t2>&1