最近私たちが解決策を見つけたとしても、それは私の心をひねり続けるというbashの経験がありました。 bashは戻りコードに関して&&
式をどのように評価しますか? myrandomcommand
が存在しないため、bash "&&"終了コードの動作を評価する
このスクリプトを実行すると、それは失敗するはずです:
#!/bin/bash
set -e
echo "foo"
myrandomcommand
echo "bar"
を結果が1と予想されています
~ > bash foo.sh
foo
foo.sh: line 6: myrandomcommand: command not found
[exited with 127]
~ > echo $?
127
しかし&&
式を使用して、わずかにコードを変更:
#!/bin/bash
set -e
echo "foo"
myrandomcommand && ls
echo "bar"
ls
stat (最初のステートメントが失敗した2番目のステートメントを評価していないので)ementは実行されませんが、スクリプトは非常に異なる動作します。
~ > bash foo.sh
foo
foo.sh: line 6: myrandomcommand: command not found
bar # ('bar' is printed now)
~ > echo $?
0
は、我々が見つけたようなカッコ期待どおりに動作します(myrandomcommand && ls)
間の発現を(使用して最初の例)、なぜ私は知りたいのですが。あなたはbashののmanページで読むことができます
[BashFAQ#105](http://mywiki.wooledge.org/BashFAQ/105)はあなたのための興味深い読み取りかもしれません – andlrc