質問: シェルスクリプトの一部が失敗した場合にシェルスクリプトを終了する方法は? シェルスクリプトの一部が失敗した場合に終了するシェルスクリプトを作成するにはどうすればよいですか?たとえば、次のコードスニペットが失敗した場合、スクリプトは終了します。n=0 until [ $n -ge 5 ] do gksu *command* && break n=$[$n+1] sleep 3
回答: トラップはシグナルを受信するとアクションを実行します。trap "echo exit; exit" 0 trap "echo hup; exit" 1 trap "echo ctl-c; exit" 2 trap "echo quit; exit" 3 trap "echo err; exit" err n=0 until [ $n -ge 5 ] do n=$[$n+1] echo $n sleep 3 done これを実行して、正常に終了させます。シグナル0でトラップします。exit もう一度実行して、^ cで中断します。シグナル2とシグナル0の両方でトラップします。ctl-c exit ゼロ以外の終了ステータスはerrでトラップされますerr exit