Mock
終了コード処理をテストするときは、useなどのスクリプトの任意の終了コードをトリガーするのが便利なことがよくあります。終了コード0と1には組み込み関数がありますが、他の終了コードには暗黙のオプションしかありませんside_effect = Exception()
。 :true
false
サブシェルの使用:
(exit "$exit_code")
費用がかかり、複雑で意図しない副作用がある可能性があります。新しいシェルを起動すると、数千行のコードが呼び出されることがありますが、終了コードを設定するための専用コマンドはほんの数行です。サブシェルは本番コードでは珍しい構成なので、初心者でもこのコードがexit "$exit_code"
。カスタム関数を作成して呼び出します。
simulate_exit_code() { return "$1" } simulate_exit_code "$exit_code"
安価ですが、複雑さが高いです。
かどうか尋ねた。より良いもの上記のオプションのどれが最良のものではありません(最初のものは簡潔さのためのもの、2番目のものはスピードのためのものです)。このような非常に簡単な組み込みコマンドがset_exit_code "$exit_code"
理想的です。
答え1
複雑なオプションは次のとおりです。
. /dev/stdin <<< 'return "$exit_code"'
(フォークしませんが、5.1+では一時ファイルまたはパイプを生成します)
完全性のために、
ksh93では、(exit "$ret")
サブシェルは分岐しないため、比較的効率的です。
bash
set_status() return "$1"
簡単に書けないBourneのようなシェルの一つです。
ではzsh
匿名関数を使用できます。
() return 3
このような必要がある場合は、個人的に以下を使用します。
set_status() { return "$1"; }
私にとっては、これが最も簡単なようです。
しかし、最終的に答えはこんな感じです終了コードを設定する単純なBashコマンドはありますか?はいいいえAFAIK。
答え2
私はカスタム機能が最善の選択だと思います(質問のオプション2)。