シェルスクリプトの終了ステータスに「予約済み」コードを使用する

アンソニー・ジオゲガン

私は最近、Advanced Bash-ScriptingGuideからこの特別な意味を持つ終了コードのリストに出くわしました彼らはこれらのコードを予約済みと呼び、次のことを推奨しています。

上記の表によると、終了コード1-2、126-165、および255には特別な意味があるため、ユーザー指定の終了パラメーターでは使用しないでください。

少し前に、次の終了ステータスコードを使用するスクリプトを作成しました。

  • 0-成功
  • 1-ホスト名が正しくありません
  • 2-無効な引数が指定されました
  • 3-不十分なユーザー権限

スクリプトを作成したとき、特別な終了コードを認識していなかったため、最初のエラー状態で1から開始し、連続するエラータイプごとに終了ステータスをインクリメントしました。

後の段階で他のスクリプト(ゼロ以外の終了コードをチェックできる)から呼び出すことができるように、スクリプトを作成しました。私は実際にはまだそれをしていません。これまでのところ、スクリプトはインタラクティブシェル(Bash)からのみ実行しており、カスタム終了コードを使用することで問題が発生する可能性があるかどうか疑問に思っていました。Advanced Bash-Scripting Guideからの推奨事項はどの程度関連性があり重要ですか?

Bashのドキュメントに裏付けとなるアドバイスは見つかりませんでした。終了ステータスのセクションには、Bashが使用する終了コードがリストされているだけですが、これらのいずれかが予約されているとは記載されておらず、独自のスクリプト/プログラムに使用しないように警告されています。

膨らんだ

プロセス終了コードの意味を標準化するためのいくつかの試みがありました。あなたが言及したものに加えて、私は知っています:

  • BSDにはsysexits.h、64以降の値の意味を定義するものあります。

  • grep終了コード0のGNUドキュメントは、少なくとも1つの一致が見つかったことを意味し、1は一致が見つからなかったことを意味し、2はI / Oエラーが発生したことを意味します。この規則は、「何も問題はなかったが何も見つからなかった」と「I / Oエラーが発生した」の区別が意味のある他のプログラムにも明らかに役立ちます。

  • Cライブラリ関数の多くの実装では、system終了コード127を使用して、プログラムが存在しないか、起動に失敗したことを示します。

  • Windowsでは、NTSTATUSコード(32ビットの数値空間全体に不便に散在している)が終了コードとして使用される場合があります。特に、壊滅的な誤動作によりプロセスが終了したことを示すコードSTATUS_STACK_OVERFLOWです(例)。

これらの規則の特定の1つに従う特定のプログラムを当てにすることはできません。唯一の信頼できるルールは、終了コード0は成功であり、それ以外はある種の失敗であるということです。(C89の値がゼロであるとEXIT_SUCCESS限らないことに注意してください。ただし、値が同じでなくexit(0)exit(EXIT_SUCCESS)も、同じように動作する必要があります。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

シェルスクリプトの終了ステータスに「予約済み」コードを使用する

分類Dev

Windows 7のインストールをクリーンアップし、システム予約済みパーティションを2番目のドライブに配置します

分類Dev

コミットメッセージを使用してプルリクエストの「マージ済み」ステータスをトリガーする方法

分類Dev

Linuxのコマンドラインまたはシェルスクリプトで予約文字をエスケープする方法は?

分類Dev

シェルスクリプトの関数から終了ステータスをキャプチャする

分類Dev

UNIXシェルスクリプトでpsqlコマンドの戻りステータスを確認する

分類Dev

シェルスクリプトの終了ステータスをどのように設定しますか?

分類Dev

Windows10をインストールしてデータを保存します。システムの予約済み/リカバリパーティションを削除する必要がありますか?

分類Dev

Expectシェルスクリプトで生成されたプロセスの終了コードを取得する方法

分類Dev

シェルスクリプトからpytest終了コードを取得する

分類Dev

ルーターの予約済みIPアドレスをすべて取得する

分類Dev

このシェルスクリプトに終了コードを含むブール式を使用する目的は何ですか?

分類Dev

C ++ベクトルコピーコンストラクターと代入演算子も予約済みスペースをコピーしますか?

分類Dev

コンパイル済みのハンドルバーテンプレートをノードスクリプトにロードしますか?

分類Dev

Xstreamと、予約済みキーワードをXML属性として使用するための回避策。("クラス")

分類Dev

最終フィールドのみを持つジェネリック(非データ)クラスに対するJava 14レコードの使用

分類Dev

ループと条件ステートメントのみを使用して昇順シーケンスをチェックするコードを作成する

分類Dev

コンストラクターでパラメーターを渡して登録済みサービスの使用を予約するにはどうすればよいですか?

分類Dev

オブジェクト破壊割り当てで予約済みキーワードをエスケープする

分類Dev

AOSPでビルド済みアプリケーション(ソースコードなし)に追加のアクセス許可を追加する方法

分類Dev

Javaコードでシェルスクリプトのパラメータを使用する

分類Dev

jメーターテストスクリプトで、パフォーマンステストの応答時間をチェックするためにJavaスクリプト、カスケードスタイルシートを除外し、HTMLのみを含めるのはなぜですか?

分類Dev

スペースのトリミングを回避するためにシェルスクリプトで読み取りコマンドを回避する方法

分類Dev

失敗時にJavaの終了ステータスを記録しないシェルスクリプト

分類Dev

シェルスクリプトのcurlからHTTPステータスコードとコンテンツの両方を取得する

分類Dev

モデルで変数名として使用される予約済みキーワードのエスケープ

分類Dev

Windows8システムの予約済みパーティションをデフラグする方法

分類Dev

予約参照番号を生成するためのベストプラクティスとコード?

分類Dev

コマンドの返される出力のステータスがOKかどうかをチェックするシェルスクリプト

Related 関連記事

  1. 1

    シェルスクリプトの終了ステータスに「予約済み」コードを使用する

  2. 2

    Windows 7のインストールをクリーンアップし、システム予約済みパーティションを2番目のドライブに配置します

  3. 3

    コミットメッセージを使用してプルリクエストの「マージ済み」ステータスをトリガーする方法

  4. 4

    Linuxのコマンドラインまたはシェルスクリプトで予約文字をエスケープする方法は?

  5. 5

    シェルスクリプトの関数から終了ステータスをキャプチャする

  6. 6

    UNIXシェルスクリプトでpsqlコマンドの戻りステータスを確認する

  7. 7

    シェルスクリプトの終了ステータスをどのように設定しますか?

  8. 8

    Windows10をインストールしてデータを保存します。システムの予約済み/リカバリパーティションを削除する必要がありますか?

  9. 9

    Expectシェルスクリプトで生成されたプロセスの終了コードを取得する方法

  10. 10

    シェルスクリプトからpytest終了コードを取得する

  11. 11

    ルーターの予約済みIPアドレスをすべて取得する

  12. 12

    このシェルスクリプトに終了コードを含むブール式を使用する目的は何ですか?

  13. 13

    C ++ベクトルコピーコンストラクターと代入演算子も予約済みスペースをコピーしますか?

  14. 14

    コンパイル済みのハンドルバーテンプレートをノードスクリプトにロードしますか?

  15. 15

    Xstreamと、予約済みキーワードをXML属性として使用するための回避策。("クラス")

  16. 16

    最終フィールドのみを持つジェネリック(非データ)クラスに対するJava 14レコードの使用

  17. 17

    ループと条件ステートメントのみを使用して昇順シーケンスをチェックするコードを作成する

  18. 18

    コンストラクターでパラメーターを渡して登録済みサービスの使用を予約するにはどうすればよいですか?

  19. 19

    オブジェクト破壊割り当てで予約済みキーワードをエスケープする

  20. 20

    AOSPでビルド済みアプリケーション(ソースコードなし)に追加のアクセス許可を追加する方法

  21. 21

    Javaコードでシェルスクリプトのパラメータを使用する

  22. 22

    jメーターテストスクリプトで、パフォーマンステストの応答時間をチェックするためにJavaスクリプト、カスケードスタイルシートを除外し、HTMLのみを含めるのはなぜですか?

  23. 23

    スペースのトリミングを回避するためにシェルスクリプトで読み取りコマンドを回避する方法

  24. 24

    失敗時にJavaの終了ステータスを記録しないシェルスクリプト

  25. 25

    シェルスクリプトのcurlからHTTPステータスコードとコンテンツの両方を取得する

  26. 26

    モデルで変数名として使用される予約済みキーワードのエスケープ

  27. 27

    Windows8システムの予約済みパーティションをデフラグする方法

  28. 28

    予約参照番号を生成するためのベストプラクティスとコード?

  29. 29

    コマンドの返される出力のステータスがOKかどうかをチェックするシェルスクリプト

ホットタグ

アーカイブ