Menu

*キーワード [#ge942557]
-exit
-&&
-||

* 関連 [#yab3735f]
-[[シェル/標準エラー出力を取得する]]

*概要 [#x888afbe]

実行結果を利用して正常系や異常系に対処します。

*実行結果を表現する方法 [#d66a38e1]

** 正常終了する [#wa69b6cf]

-sample.sh
 # 正常終了
 exit 0

** 異常終了する [#hcdf5d90]

-sample.sh
 # 異常終了
 exit 1

** コマンドの実行結果をシェルスクリプトの実行結果にする [#k8b85282]

exit がなければ最後に実行したコマンドの実行結果がそのシェルスクリプトの実行結果になります。

*** 正常終了の例 [#r5bc177f]
-sample.sh
 # コマンド rm を実行
 rm sample.sh

次の実行結果を得ます。
 $ ./sample.sh
 $ echo $?
 0
 $

*** 異常終了の例 [#q99e593c]
-sample.sh
 # コマンド rm を実行
 rm sample2.sh

次の実行結果を得ます。
 $ ./sample.sh
 rm: cannot remove `sample2.sh': そのようなファイルやディレクトリはありません
 $ echo $?
 1
 $

*実行結果を利用する方法 [#cdf9a746]

** 正常終了のとき次の処理を続ける [#cc8de289]

sample.sh が正常終了のとき next.sh を続けるには次のようにします。
 $ ./sample.sh && ./next.sh

** 異常終了のとき次の処理を続ける [#eb36ee1e]

sample.sh が異常終了のとき exception.sh を続けるには次のようにします。
 $ ./sample.sh || exception.sh

** 正常終了と異常終了で続ける処理を振り分ける [#qc208c6c]

&& と || を連ねて書くと振り分ける動作をします。

*** 正常終了の例 [#b0ede2c8]
-sample.sh
 echo sample
 exit 0
-next.sh
 echo next
-exception.sh
 echo exception

次の実行結果を得ます。
 $ ./sample.sh && ./next.sh || ./exception.sh
 sample
 next
 $

*** 異常終了の例 [#m4eaec68]
-sample.sh
 echo sample
 exit 1
-next.sh
 echo next
-exception.sh
 echo exception

次の実行結果を得ます。
 $ ./sample.sh && ./next.sh || ./exception.sh
 sample
 exception
 $

*参考 [#t4d23c03]
-[[Linuxコマンド集 - 【 && 】 1つ目のコマンドが正常終了した場合に2つ目のコマンドを実行する:ITpro>http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230604/]]
-[[Linuxコマンド集 - 【 || 】 1つ目のコマンドの実行に失敗した場合に2つ目のコマンドを実行する:ITpro>http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230701/?ST=oss]]