4

これが正しい動作であることを示すドキュメントが見つかりません。この動作は、bash 4.2.25 および 4.1.2 で確認済みです。それらは私が簡単にアクセスできる最新のものです。条件が前のサブシェルの動作を変更する理由について誰かが説明を持っていれば、非常に感謝しています。

# ( set -e; false ; echo bye )
# ( set -e; false ; echo bye ) || echo "failed"
bye
#

ありがとう、ブライアン

4

2 に答える 2

2

4.2 man ページの-eオプションの説明の強調された部分が当てはまると思います。bash

失敗したコマンドが&& または || で実行されたコマンドの[...]部分である場合、シェルは終了しません。リスト[...]

このコマンドは、オペレーターfalseの LHS を構成するサブシェルの一部であるため、失敗しても無視されます。が実際に設定されているシェル内の の一部ではないため、おそらくこれはバグです。||-efalse||set -e

于 2014-05-28T21:36:22.887 に答える