Bash

apachectl 擷取或抑制 configtest 的“語法 OK”

  • November 24, 2020

Apacheconfigtest對擷取語法錯誤很有用。成功時它會列印“Syntax OK”,並且apachectl configtest在 bash 腳本中執行時我想抑制它。

我已經嘗試了通常的輸出重定向到/dev/null,將結果分配給一個變數,如下所示:

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

但始終輸出“語法正常”。

這能被壓制嗎?

在裡面$()你仍然可以將 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嘗試從命令中複製原始錯誤程式碼,但只有在將其放入 shell 腳本並希望保留這些功能時,才真正需要它們。

引用自:https://serverfault.com/questions/1043694