2012-04-25 25 views
13

を失敗しました次のようになります。リダイレクトコマンドの出力には、私は変数にコマンドの出力をリダイレクトしようとしている

19:19:12 [email protected] ~ OUTPUT=$(sudo apache2ctl configtest) 
Syntax OK 
Syntax OK 

変数は空白のままです。私は他のコマンドでも同じことを試しましたが、すべて正常に動作します。

OUTPUT=$(ls -l) 

ファイルリストを変数OUTPUTに書き込むことで、後で読み込むことができます。 私はそれを動作させるために何をすべきですか?

+0

一般的な原因は、OUTPUTの間に空間を有するからであると=これはあなたの場合には真実ではないのですか? – ControlAltDel

答えて

27

多分出力はstderrになりますが、stdoutではなくなりますか?設定試験は、設定ファイルでのエラーで成功することができたときにnginxの可能な状況についてOUTPUT=$(sudo apache2ctl configtest 2>&1)

+0

個人的に私は答えをもう少し説明的に見つけるhttp://stackoverflow.com/a/3130425/1504300 – reallynice

0

はこれを試してみてください。 例:bashのスクリプトで正しいチェックエラーの

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 

使用を必要とする:

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