簡體   English   中英

將命令輸出重定向到 bash 中的變量失敗

[英]Redirecting command output to a variable in bash fails

我正在嘗試將命令輸出重定向到一個變量:

OUTPUT=$(sudo apache2ctl configtest)

然后閱讀它:

echo $OUTPUT

運行時輸出如下:

19:19:12 user@user ~ OUTPUT=$(sudo apache2ctl configtest)
Syntax OK
Syntax OK

但變量保持空白。 我已經對其他命令嘗試了相同的方法,一切正常。

OUTPUT=$(ls -l)

這會將文件列表寫入變量OUTPUT以便稍后讀取。 我應該怎么做才能使它工作?

也許輸出到stderr ,而不是stdout 嘗試這個:

OUTPUT=$(sudo apache2ctl configtest 2>&1)

對於 nginx 可能的情況,當 configtest 可以成功但配置文件中出現錯誤時。 例子:

nginx: [warn] conflicting server name "test.com" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

為了正確檢查 bash 腳本中的錯誤,需要使用:

if [[ $((sudo /sbin/service nginx configtest) 2>&1 | grep "failed\|warn" ) ]]; then
    echo "ERROR!!!"
else
    echo "OK!!!"
fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM