はここmyscript.sh
の内容です空のtest
ファイルが作成されます:バッシュ "厳格" モードと矢印(>)演算子
-rw-r--r-- 1 spg staff 0B 23 Feb 16:32 test
私は、 (set -euo pipefail
の組み合わせを使用して)bar
コマンドを見つけられなかった場合、この時点でスクリプトの実行が停止し、空のtest
ファイルが作成されません。
>
オペレータ(この場合はbar
)の左側の式が失敗した場合、どのようにしてtest
ファイルを作成できないかを知りたいと思います。
ところで、たとえば、実行して
bar
が最初に成功するかどうかをテストしようとすることができます。 'set -e'の意図しない結果のいくつかを記述する[BashFAQ#105](http://mywiki.wooledge.org/BashFAQ/105)と[BashFAQ#112](http://mywiki.wooledge .org/BashFAQ/112)( 'set -u'の意図しない結果のいくつかを記述しています)。 –@CharlesDuffyこれは非常に興味深い記事です。共有のおかげです。 – spg
Bashの重大なエラー処理では、 'set -e'を使う代わりに(1)トラップエラーが発生し、(2)各レベルで"例外 "コール階層内にあります。そうすることで、明示的に処理された障害シナリオとバグの違いをスクリプトに伝えることができます。それはtry/catchメカニズムのように見えます。ほとんどの人が投資したいよりも多くのシェルコードを必要としますが、それは実行可能で再利用可能であり、一度達成されると、関数内のバグに起因する戻りコードを受け取る論理演算子の専制主義から解放されます。 – Fred