Linuxのシェルで例外をどのようにキャッチしますか?
Linuxでは、シェルスクリプトのtrapコマンドを使用して例外を捕捉できます。trapコマンドは、スクリプトの実行中に特定のシグナルまたはコマンドの終了ステータスを捕捉し、対応する動作を実行するために使用されます。以下は、trapコマンドを使用して例外を捕捉する一般的な手順です。
- スクリプトの最初に、例外発生時に実行する操作を指定したtrap コマンドを定義します。構文は次のとおりです。
- トラップコマンドシグナル
- ここで、commandは異常が発生した際に実行されるコマンドで、正当なシェルコマンドであれば何でも良く、signalは異常シグナルの名前で、たとえばERRはスクリプトエラーの捕捉を意味します。
- エラーが発生する可能性のあるスクリプトでは、set -e コマンドでエラー処理モードをオンにします。エラー処理モードがオンのとき、スクリプトでエラーが発生すると即座に終了し、tra命令で定義した処理を実行します。
次に、trapコマンドを使用して例外を捕捉する方法を示すサンプルスクリプトを示します。
#!/bin/bash
# 定义异常处理函数
handle_error() {
echo "An error occurred. Exiting..."
exit 1
}
# 在脚本开头定义trap命令,捕获ERR信号,并执行handle_error函数
trap 'handle_error' ERR
# 开启错误处理模式
set -e
# 模拟一个错误
echo "This is an error" >&2
# 此处错误会导致脚本立即退出,并执行handle_error函数
echo "This line will not be executed"
上記の例では、スクリプトが「echo “This is an error”」という行に到達するとエラーが発生し、スクリプトは直ちに終了し、handle_error関数が実行されます。関数内の処理は、エラーメッセージを表示し、終了することです。