Bash で終了コードを確認する

Muhammad Husnain 2022年6月21日
Bash で終了コードを確認する

このチュートリアルでは、Bash でステートメントの終了ステータスを取得および表示するためのいくつかの方法について説明します。最初に、単純な if ステートメントを使用して終了ステータスを取得する方法について説明し、その後、終了ステータスを取得するための代替方法と簡略表記について説明します。

Bash の終了コードを確認してください

終了ステータスは基本的に、コマンドが成功したかどうかを示す整数です。直感的ではありませんが、終了ステータス 0 は成功を示し、ゼロ以外の値は失敗/エラーを示します。

この直感的でないソリューションでは、さまざまなエラーコードでさまざまなエラーを表すことができます。たとえば、コマンドが見つからない場合は、127 の終了ステータスが返されます。

Bash で終了コードを確認する方法は、$? を使用することです。指図。終了ステータスを出力する場合は、次の方法で実行できます。

# your command here
testVal=$?
echo testVal

エラーを報告するためにゼロ以外の終了コードが使用されることはわかっています。一般的なエラーをチェックしたい場合は、問題のコマンドと、終了コードがエラー(ゼロ以外)であるかどうか、または終了コードが適切な実行を示しているかどうかをチェックする if ステートメントを使用して小さなスクリプトを作成できます。。

# your command here
testVal=$?
if [$testVal -ne 0]; then
    echo "There was some error"
fi
exit $testVal

$?test を使用して、簡略表記を行うことができます。指図。このコードの最小限の例は次のとおりです。

# your command here
test $? -eq 0 || echo "There was some error"

上記のステートメントをよりよく理解するために、それを拡張することができます。

# your command here
exitStat = $?
test $exitStat -eq 0 && echo "No error! Worked fine" || echo "There was some error";
exit $exitStat

上記のように、正常に実行された場合はエラーなし!正常に動作しましたというメッセージが表示され、失敗した場合はエラーメッセージが表示されます。

重要な注意事項と考えられる代替ソリューション

コマンドが正しく実行されているかどうかを確認するために終了コードを使用する場合は、はるかに簡単な代替手段があります。

# define your_command here
# your_command = enter a command here
if your_command; then
    echo command returned true
else
    echo command returned an error
fi

この場合、通常、最初の 2つのオプションを使用した場合と同じ出力が得られます。さらに、出口コードに関する特定の情報を取得したり、特定の出口コードを取得したりするには、手動で $? を実行する必要があります。

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

関連記事 - Bash Exit