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 脚本中并希望保留这些功能时,您才真正需要它们。