web-dev-qa-db-ja.com

nginx構成ファイルがBashスクリプト内で有効かどうかをテストするにはどうすればよいですか?

  • Ubuntu 16.04
  • Bashバージョン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
Curious Sam

終了ステータスを使用します。 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
5
Dee Eff