- 乌班图16.04
- bash 版本 4.4.0
- nginx版本:nginx/1.14.0
如何在 Bash 脚本中测试 Nginx 配置文件?目前我在 shell 中使用 -t :
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
但我想在脚本中做到这一点?
答案1
使用退出状态。来自 nginx 联机帮助页:
如果成功则退出状态为 0,如果命令失败则退出状态为 1。
和来自http://www.tldp.org/LDP/abs/html/exit-status.html:
$?读取最后执行的命令的退出状态。
一个例子:
[root@d ~]# /usr/local/nginx/sbin/nginx -t;echo $?
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
0
[root@d ~]# echo whatever > /usr/local/nginx/nonsense.conf
[root@d ~]# /usr/local/nginx/sbin/nginx -t -c nonsense.conf;echo $?
nginx: [emerg] unexpected end of file, expecting ";" or "}" in /usr/local/nginx/nonsense.conf:2
nginx: configuration file /usr/local/nginx/nonsense.conf test failed
1
一个脚本化的例子:
#!/bin/bash
/usr/local/nginx/sbin/nginx -t 2>/dev/null > /dev/null
if [[ $? == 0 ]]; then
echo "success"
# do things on success
else
echo "fail"
# do whatever on fail
fi
答案2
@DeeEff 以上 bash 脚本是否适用于 nginx 容器到云虚拟机或云虚拟机到 nginx 容器
示例 sudo 容器名称 -t
bash 程序/脚本,可以检查 Nginx 服务。如果返回“Hello World”页面,脚本或程序应打印“OK”并以代码 0 退出。如果未返回“Hello World”页面,则应以非零代码和简短诊断退出。