我正在通过简单的nginx配置检查来测试bash脚本错误代码:
验证者
#!/bin/bash
# Error codes
ERROR_INVALID_NGINX_CONFIG=2
function validate() {
if [ $1 -eq 0 ]; then
echo OK
else
echo Invalid config
exit $2
fi
}
sudo nginx -t
validate $? $ERROR_INVALID_NGINX_CONFIG
然后,我有调用该脚本的调用者脚本,以检查是否存在错误:
呼叫者
#!/bin/bash
./verifier
if [ $? -eq 0 ]; then
echo ok!
else
echo Error code: $?
fi
然后,当我执行./caller
并出现nginx config错误时,它总是显示错误代码1而不是2:
nginx: configuration file /etc/nginx/nginx.conf test failed
Invalid config
Error code: 1
我一定错过了一些简单的东西,任何人都可以看到吗?
$?
始终是最后一条命令的退出代码。在您的示例中,这可能是签入if
。
您需要为退出代码设置一个变量,并使用该变量:
#!/bin/bash
./verifier
RESULT=$?
if [ $RESULT -eq 0 ]; then
echo ok!
else
echo Error code: $RESULT
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句