我试图在脚本中测试nginx配置:
reply="$(nginx -t)"
echo $reply
但$reply不包含返回的文本。如果我将第一行放在终端中,nginx 文本会在终端中弹出,但是如果我将第二行放在终端中,则没有任何输出。我的兴趣是在 if 语句中使用该 nginx 测试的输出
reply="$(nginx -t)"
if [[ ${reply} == *"nginx: configuration file /etc/nginx/nginx.conf test failed"* ]]
then
echo "It's there!";
fi
有没有办法获取变量中命令nginx -t返回的输出?
从您的条件来看,您正在测试错误消息,这意味着nginx
很可能将其打印到 stderr,而$(...)
默认情况下仅捕获 stdout 输出。
要捕获这两个流,请使用:
reply="$(nginx -t 2>&1)"
2>&1
将 stderr 重定向到 stdout,这样 stderr 也被命令替换$(...)
捕获。