コマンド出力を変数にリダイレクトしようとしています:
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の場合、configファイルでエラーが発生して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