プログラムの終了コードと引数を比較したいと思います。何が間違っていますか? (終了コードの比較)
$1
は
"1"
を取得
CODE=$1
if [[ $(./program) -eq $CODE ]]; then
echo "same"
else
echo "different"
fi
を:これは私がやっているものです。しかし、私はエラーが発生しています。ここで何が間違っていますか?
プログラムの終了コードと引数を比較したいと思います。何が間違っていますか? (終了コードの比較)
$1
は
"1"
を取得
CODE=$1
if [[ $(./program) -eq $CODE ]]; then
echo "same"
else
echo "different"
fi
を:これは私がやっているものです。しかし、私はエラーが発生しています。ここで何が間違っていますか?
終了コードを比較していません。あなたはプログラムの標準出力を$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
また、プログラムの出力で遊ぶ必要がある場合はどうすればいいですか?ちょうど2回実行する?どうやって私に見せたのか、 'res = $(./ program)'? –
@UFCInsider、 'program_output = $(./ program); program_rc = $? ' –
申し訳ありません。ありがとう! –
エラーは何ですか? ./program –
終了コードを比較しないで、単に 'program'の出力を比較しているだけです。 – anubhava
脇に:自分の変数に小文字の名前を使用してください。シェルやオペレーティングシステムの意味を持つ変数名は、あなたが間違って上書きする危険があります(特に、シェル変数を設定すると、同じ名前の環境変数が上書きされるため)。 [関連標準](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html)を参照してください。 –