Linuxでエラーレベルを確認するには、$?
を使用することができます。以前のコマンドが失敗した場合でも、いずれかのコマンドが正常に実行された場合は、$?
の値がリセットされます。私は以下のように試験のために使用コード:
cd /vobs/test2/test3
if [ $2 = "R" ]; then
mv missing ~/missing2
echo "Created"
がmv missing ~/missing2
を$?
が1
に等しくなければならない障害が発生したが、最後のコマンドによるecho "Created"
に$?
が0
に等しくなる行われると仮定します。上記のコードのスキャンを実行して、$?=1
の瞬間にexit 1
コマンドを実行する方法。私は他のすべてのコマンドを実行するために実行することができますが、それは実行する最善の方法ではありませんか?これについていくつかアドバイスが必要です。
シェルスクリプトの作業断片を示した場合に役立つことに注意してください。あなたが本当に思いついたことを推測するのを困難にする 'fi'を見逃してしまったのです - ' if'の本体の内側の 'echo'か、それの外側ですか?押し込みも私たちを助けません。一般に、 '' $ 2 ''を引用符で囲むべきです(ただし、' "R" 'の前後に引用符を省略しても問題ありません。コマンドが失敗することを心配しているなら、あなたはそれをテストすることができます: 'もしmv missing〜/ missing;次に "Created"をエコーします。 else echo "作成に失敗しました";あなたは 'set -e'を使うことができます。 –
ベストプラクティスは、一般に、手元の即時スクリプトに適した方法でエラー処理を構築することです。 'die(){(($#))&& echo" $ * ">&2;出口1。 } 'は、この目的のための便利なユーティリティ関数であり、' cd/vobs/test2/test3 ||死ぬ。 –
... 'set -e'を使うことができますが、注意と注意がかなり必要です。既存の回答へのコメントで私のリンクを見てください。 –