2016-09-05 9 views

答えて

2
  • 、変数へ
  • を出力を保存し、次のようにあなたがすることができますコマンド foo --barこのスクリプト muteを呼び出した場合

    #!/bin/bash 
    
    temp_file=$(mktemp)  
    "[email protected]" > temp_file 
    if [[ $? == 0 ]]; then 
        cat "$temp_file" 
    fi 
    rm "$temp_file" 
    

    は、

  • 戻りコードを確認してから
  • 印刷出力を、それがゼロ

    output="$(command)" 
    
    if [[ $? -eq 0 ]] ; then 
        echo "$output" 
    fi 
    
+0

おかげで、時々ソリューションは:-)が、すぐにサイトは私をできるようになるとして受け入れるだろうあまりにも明白である...これは保存しないこと –

+0

ノートの場合最後の改行は正しく行われます。 'IFS'の価値を変えれば修正できると思います。 – redneb

+0

代わりに 'printf" $ output \ n "'を使用しています。 –

3

ステータスコードは、プロセスが終了したときにのみ認識されます。だからあなたが求めていることをする唯一の方法は、そのstdoutを一時ファイルにリダイレクトしてプロセスを実行し、それが終了したらそのステータスコードを調べることです。 0以外の場合は、テンポラリファイルを削除します。ゼロの場合は、テンポラリファイルの内容をstdoutに出力します。

ここですることを自動化するbashスクリプトです:

mute foo --bar 
関連する問題