Как я могу проверить, являются ли файлы конфигурации nginx действительными в скрипте Bash?

  • Ubuntu 16.04
  • Bash версия 4.4.0
  • Версия nginx: nginx / 1.14.0

Как я могу проверить файлы конфигурации Nginx в скрипте Bash? В данный момент я использую -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 

Но я хотел бы сделать это в сценарии?

Используйте статус выхода. Из справочной страницы 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