Apache configtest
полезен для обнаружения синтаксических ошибок. В случае успеха он печатает «Синтаксис ОК» и при запуске apachectl configtest
в сценарии bash я хочу подавить это.
Я пробовал обычные перенаправления вывода на / dev / null
, присвоение результатов переменной, например:
AOUTPUT=$(/usr/sbin/apache2ctl -t && /usr/sbin/apache2ctl graceful)
, но всегда выводится "Syntax OK".
Можно ли это подавить?
Внутри $()
вы все еще можете перенаправить stderr так, чтобы он был таким же, как stdout, и тогда он будет захвачен присваиванием. Например:
if AOUTPUT=$(/usr/sbin/apache2ctl -t 2>&1)
then /usr/sbin/apache2ctl graceful
else rc=$?; printf "%s\n" "$AOUTPUT" >&2; exit $rc
fi
Я добавил >&2
, чтобы ошибки по-прежнему выводились на stderr, и exit
, чтобы попытаться продублировать исходный код ошибки из команды, но вы бы они действительно нужны только в том случае, если вы помещаете это в сценарий оболочки и хотите сохранить эти функции.