apachectl перехватывает или подавляет «Syntax OK» configtest

Apache configtest полезен для обнаружения синтаксических ошибок. В случае успеха он печатает «Синтаксис ОК» и при запуске apachectl configtest в сценарии bash я хочу подавить это.

Я пробовал обычные перенаправления вывода на / dev / null , присвоение результатов переменной, например:

AOUTPUT=$(/usr/sbin/apache2ctl -t && /usr/sbin/apache2ctl graceful)

, но всегда выводится "Syntax OK".

Можно ли это подавить?

0
задан 24 November 2020 в 11:00
1 ответ

Внутри $() вы все еще можете перенаправить 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, чтобы попытаться продублировать исходный код ошибки из команды, но вы бы они действительно нужны только в том случае, если вы помещаете это в сценарий оболочки и хотите сохранить эти функции.

2
ответ дан 24 November 2020 в 13:52

Теги

Похожие вопросы