出口$とは何ですか?シェルスクリプトでは? [コピー]

出口$とは何ですか?シェルスクリプトでは? [コピー]

シェルスクリプトでこのコマンドは何ですか?exit $?

それを説明する資料が見つかりませんでした。

ベストアンサー1

目的は、通常、前のコマンド(シェルの表現)とexit $?同じ終了状態でシェルを終了することです。$?しかし、ここにはいくつかの問題があります。

  • 周囲の引用符は省略されています$?。これは分割+グローブの影響を受けるため、$?文字が含まれていると正しく機能しないことを意味します$IFS
  • $?否定的な場合、-12以前のコマンドが関数であるか、一部のシェルに組み込まれたコマンドであるかのようにexit認識できないオプションとして解釈され、エラーが発生する可能性があります。exit -- "$?"これを避けることはできますが、--すべてのシェルがそれをサポートしているわけではありません。

単独で使用すると、上記の2つの問題を回避できます。exitなぜならexit、パラメータが提供されないときのデフォルトの動作は、最後のコマンドの終了状態で終了するからです。

前のコマンドが失敗したときにスクリプトを終了し(そしてそのコマンドと同じ失敗した終了状態で終了する)一般的な慣用語は次のとおりです。

that-command || exit

シグナルのために前のコマンドが終了した場合、または前のコマンドの戻りコードが0から127の範囲外の場合は、追加の考慮事項が必要です。プロセスの終了時にデフォルトの終了コードは何ですか?

おすすめ記事