トラップ コマンドを使用して、スクリプトの実行中にシステムによってエラー シグナル システムをキャッチできます。 次に、シェル コマンドを実行するか、関数を呼び出すことができます。 このようにして、bash スクリプトで発生したエラーに対してカスタム スクリプト コードを実行できます。
これは、部分的な変更を元に戻したり、データベース接続を閉じたり、関係者へのメール ステータスなどを行うのに役立ちます。次のような ERR シグナルで trap コマンドを使用できます。
trap 'on_error_function' ERR
シェル スクリプトでエラーが生成されると、シェル スクリプトの「on_error_function」という名前の関数が実行されます。 関数を呼び出す代わりに、コマンドを実行することもできます。
例: Bash でエラー時に関数を実行する
例で理解しましょう。 サンプル シェル スクリプトを作成し、任意の名前の関数を作成します。 次に、 trap
の機能を持つコマンド エラー 信号。 次に、エラーを生成する簡単なコマンドを追加します。
#!/usr/bin/env bash on_error(){ echo “何らかのエラーが発生しました” } trap ‘on_error’ ERR ls ~/dir_not_exists
#!/usr/bin/env bash on_error(){ エコー 「何らかのエラーが発生しました」 } トラップ ‘on_error’ エラー ls 〜/dir_not_exists |
上記のスクリプトを実行すると、以下の結果が表示されます。
Output:
ls: cannot access '/home/tecadmin/dir_not_exists': No such file or directory Some error occurred
エラーがトラップされ、関数が on_error()
bash スクリプトによって実行されます。
例: Bash でエラー時にコマンドを実行する
もう 1 つの例を見てみましょう。 ここでは、シェルスクリプトでエラーが発生した場合にコマンドを実行します。
#!/usr/bin/env bash trap ‘echo Ohhh no!’ ERR ls ~/dir_not_exists
#!/usr/bin/env bash トラップ 「こだま!」 エラー ls 〜/dir_not_exists |
上記のスクリプトでは、別の関数を定義していません。 エラー時に echo コマンドを実行するだけです。 上記のスクリプトを実行し、結果を確認します。
Output:
ls: cannot access '/home/tecadmin/dir_not_exists': No such file or directory Ohhh no!
例: エラーが発生した行番号を取得する
スクリプト名とともに、bash スクリプトでエラーが発生した行番号も確認できます。 これを行うには、bash に組み込まれている「caller」を使用します。
#!/usr/bin/env bash on_error(){ echo “エラーが見つかりました: $(caller)” >&2 } trap ‘on_error’ ERR ls ~/dir_not_exists
#!/usr/bin/env bash on_error(){ エコー 「次の場所でエラーが見つかりました: $(caller)」 >&2 } トラップ ‘on_error’ エラー ls 〜/dir_not_exists |
上記のスクリプトを実行し、結果を確認します。 エラーが発生したスクリプト名と行番号が表示されます。
Output:
ls: cannot access '/home/tecadmin/dir_not_exists': No such file or directory Error found in: 9 ./script.sh
この記事を読んでいただきありがとうございます。 願わくば、このチュートリアルが、エラーをキャッチして何らかのアクションを実行することにより、シェル スクリプトをより適切に作成するのに役立つことを願っています。
The post Bash スクリプトでコマンドまたは関数をエラー時に実行する方法 – TecAdmin appeared first on Gamingsym Japan.