注: this is not a duplicate of In bash, is there an equality of die "error msg" , この投稿の最後に示されています.
シェル関数を考える
foo () {
echo "testing..." 1>&2
return 1
echo "should never reach this point" 1>&2
}
foo
の予想される動作を以下に示します。
% foo || echo $?
testing...
1
関数 の最初の2行に示されているfoo
機能をカプセル化しdie
て、 の定義foo
を
foo () {
die 1 "testing..."
echo "should never reach this point" 1>&2
}
...元の動作を維持しながら。
私の興味は主に ですが、異なる場合は、および/またはスクリプトにzsh
適した回答にも興味があります。bash
/bin/sh
ところで、これはうまくいきません:
die () {
local exit_code=$1
shift
echo "$*" 1>&2
exit $exit_code
}
コマンドラインからfoo
this を使用したバージョンを実行die
すると、現在のシェルが強制終了されます (少なくとも、これは、似たようなことを試したときに得られる結果です)。これが、この質問がIn bash, is there a equality of die "error msg"の複製ではない理由です。いずれにせよ、その他の質問に対する答えは、ここでの私の要件を満たしていません。