シェルスクリプトでこのコマンドは何ですか?exit $?
それを説明する資料が見つかりませんでした。
ベストアンサー1
目的は、通常、前のコマンド(シェルの表現)とexit $?
同じ終了状態でシェルを終了することです。$?
しかし、ここにはいくつかの問題があります。
- 周囲の引用符は省略されています
$?
。これは分割+グローブの影響を受けるため、$?
文字が含まれていると正しく機能しないことを意味します$IFS
。 $?
否定的な場合、-12
以前のコマンドが関数であるか、一部のシェルに組み込まれたコマンドであるかのようにexit
認識できないオプションとして解釈され、エラーが発生する可能性があります。exit -- "$?"
これを避けることはできますが、--
すべてのシェルがそれをサポートしているわけではありません。
単独で使用すると、上記の2つの問題を回避できます。exit
なぜならexit
、パラメータが提供されないときのデフォルトの動作は、最後のコマンドの終了状態で終了するからです。
前のコマンドが失敗したときにスクリプトを終了し(そしてそのコマンドと同じ失敗した終了状態で終了する)一般的な慣用語は次のとおりです。
that-command || exit
シグナルのために前のコマンドが終了した場合、または前のコマンドの戻りコードが0から127の範囲外の場合は、追加の考慮事項が必要です。プロセスの終了時にデフォルトの終了コードは何ですか?