2016-12-09 12 views
0

プログラムの終了コードと引数を比較したいと思います。何が間違っていますか? (終了コードの比較)

$1"1"を取得
CODE=$1 
if [[ $(./program) -eq $CODE ]]; then 
    echo "same" 
else 
    echo "different" 
fi 

を:これは私がやっているものです。しかし、私はエラーが発生しています。ここで何が間違っていますか?

+0

エラーは何ですか? ./program –

+3

終了コードを比較しないで、単に 'program'の出力を比較しているだけです。 – anubhava

+2

脇に:自分の変数に小文字の名前を使用してください。シェルやオペレーティングシステムの意味を持つ変数名は、あなたが間違って上書きする危険があります(特に、シェル変数を設定すると、同じ名前の環境変数が上書きされるため)。 [関連標準](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html)を参照してください。 –

答えて

5

終了コードを比較していません。あなたはプログラムの標準出力を$CODEと比較しています。たぶん

CODE="$1" 
./program 
rc=$? 
if [[ "$rc" -eq "$CODE" ]] 
then echo "same" 
else echo "different" 
fi 

あなただけの状態で$?を使用することができますが、レポート作成と検証のためにそれをお勧めします:

CODE="$1" 
./program 
rc=$? 
if [[ "$rc" -eq "$CODE" ]] 
then echo "same ($rc and $CODE)" 
else echo "different (got $rc, wanted $CODE)" 
fi 
+0

また、プログラムの出力で遊ぶ必要がある場合はどうすればいいですか?ちょうど2回実行する?どうやって私に見せたのか、 'res = $(./ program)'? –

+1

@UFCInsider、 'program_output = $(./ program); program_rc = $? ' –

+0

申し訳ありません。ありがとう! –

関連する問題