- Ubuntu16.04
- バッシュバージョン4.4.0
- nginx バージョン: nginx/1.14.0
BashスクリプトでNginx設定ファイルをテストする方法は?現在、シェルで-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