2010-12-14 6 views
0

私は5つのコマンドを実行する必要があるタスクを自動化する必要があります。コマンドが失敗しても、次のコマンドがすべて実行され、現在4番目のコマンドが失敗した場合、シェルスクリプトが終了し5番目のコマンドを実行しません。現在のコマンドが失敗しても次のコマンドを実行するシェルスクリプトを書くには?

シェルスクリプトは、現在のコマンドが失敗しても次のコマンドをすべて実行するようにする必要がありますか?

+4

ここにシェルスクリプトを投稿してください(関連する部分)。障害発生時に終了するための特別な指示がなければ、終了しないでください。多分あなたはmakeを使うでしょうか? – khachik

答えて

4

は、スクリプト・インタープリタ あなたあなたはbash(または/ binに/ shのは、bashのへのシンボリックリンクです)と仮定すると、 スクリプトに

set -e 

がコード内にあるかどうかを確認してください。

4

さて、以下のコードで何が問題になっていますか?

#!/bin/bash 
cmd1 
cmd2 
cmd3 
cmd4 
cmd5 
1

"トラップ" コマンドはここに役立つかもしれない:

trap

1

私は

|| true 

例だろう。

(set -e; false ; echo not here;) 
(set -e; false || true ; echo still here;) 

例:あなたは、その優れたフラグを-eフラグを保つことができる

command1 || true 
command2 || true 
command3 || true 
command4 || true 
command5 || true 

その方法を。