コマンドが失敗した場合にbashを即座に終了させる「set -e」の効果を元に戻すにはどうすればよいですか?


205

set -eインタラクティブなbashシェルに入った後、コマンドがゼロ以外で終了すると、bashはすぐに終了します。この効果を元に戻すにはどうすればよいですか?

回答:


309

set +e。うん、それはあなたがいることを後方だ可能とシェルのオプションをset -して無効にして、それらをset +。歴史的なレーズン、donchanow。


どうもありがとうございました。対応するマニュアルページ(faqs.org/docs/bashman/bashref_56.html)の最後の行にありますが、最後まで読みませんでした。
Tianyi Cui

bashのマニュアルは非常に巨大で、本当です。(参考までに、あなたは新しいようです。質問のベストアンサーの下にあるチェックマークをクリックするのはこれで完了です。これを「受け入れる」と呼びます。)
zwol

12
悲しいことに、Unixシェル言語(その大部分は「bash」に固有ではありません)は、現在最も広く使用されている、内部で最も一貫性のないプログラミング言語の1つです。あなたはこれらの小さないぼをもっとたくさん学ばなければならないでしょう。そして、それはドキュメントのバグだと思います。
zwol 2010

10
歴史的なブドウはレーズン地獄です!
ジェームズ

2
最後に、Bashの不当なバッシング:シングルダッシュは、標準のPOSIXシェルコマンドラインオプションであるため、「何かを行う」のに最も自然です。+のようなものです-が、何かを横切ることは「≠」のように「ない」ことを意味します。
Ciro Santilli郝海东冠状病六四事件法轮功

68

set +e/ set -eを上書きしたいときはいつでも/ を使うのは不便かもしれません。私はもっ​​と簡単な解決策を見つけました。

このようにする代わりに:

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

あなたはこのようにそれを行うことができます:

command_that_might_fail_but_we_want_to_ignore_it || true

または、キーストロークを保存し、少し不可解であっても構わない場合:

command_that_might_fail_but_we_want_to_ignore_it || :

お役に立てれば!


11
他の誰かが好奇心をそそる場合に備えて、の歴史について疑問に思っていて、ここ:私の答えを見つけました。
3cheesewheel 2013

4
これは、実行しているコマンドの戻りコードを気にしない場合にのみ適用されます。
Isaac

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.