GNU/Linux >> Linux の 問題 >  >> Linux

コマンド出力を bash の変数にリダイレクトすると失敗する

おそらく出力は stderr になります 、 stdout ではありません ?これを試してください:

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

configtest が構成ファイルのエラーで成功する可能性がある nginx の可能性のある状況の場合:

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

Linux
  1. Bashスクリプト(I)

  2. コマンドの出力をシェル変数に割り当てる方法は?

  3. Bashで合法的なコマンドの前に変数を設定するのはなぜですか?

  1. コマンドの出力をBashを使用して列ごとに分割しますか?

  2. docker でのコマンド出力のリダイレクト

  3. UNIXのtimeコマンドの出力をbashの変数にリダイレクトしますか?

  1. Linuxコマンドの出力を変数に割り当てる方法

  2. コマンドの出力をシェル変数に保存しますか?

  3. Bash find コマンドの詳細出力