apachectl 捕获或抑制 configtest 的“语法 OK”

apachectl 捕获或抑制 configtest 的“语法 OK”

Apacheconfigtest有助于捕获语法错误。成功时它会打印“语法正常”,而apachectl configtest在 bash 脚本中运行时我想抑制此错误。

我已尝试将通常的输出重定向到/dev/null,并将结果分配给变量,如下所示:

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

但始终输出“Syntax OK”。

这能被抑制吗?

答案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从命令中复制原始错误代码,但只有当您将其放入 shell 脚本中并希望保留这些功能时,您才真正需要它们。

相关内容