Linux

2013-01-29, linux

Bashのエラー処理

以下に出てくる「false」は常に戻り値1(エラーとみなされる値)を返す標準のコマンドです。

その1:「-e」オプションを付ける

通常のスクリプトでは、ある処理の戻り値が0以外になっても、そこで処理をストップすることはなく、次の処理に移ります(下記例だと「Hello」と表示されます)。「-e」オプションを付けておくと、戻り値0以外のステータスで終了したコマンドがあった場合(=エラーが発生した場合)に処理が中断されます。

#! /bin/bash -e

false
echo "Hello."

その2:trapを利用する

エラーが発生した際に実行される関数(ハンドラ)を設定することもできます。本来、ハンドラが呼び出された後は処理の続きに戻りますが、exitなどで強制的に終了させることも可能なようです。以下のように記述することで上記例と同じようにエラーで処理を中断しつつ、こちらはエラーメッセージも出力することが可能です。

#! /bin/bash

trap handler ERR

function handler(){
  echo "Error!"
  exit 1
}

false
echo "Hello."

参考URL

Software Design 2013年 02月号

この記事は役に立ちましたか?