bashスクリプトでset -xeが実行するアクション

bashスクリプトでset -xeが実行するアクション

私はbashシェルスクリプトが他のコマンドの前にこれを持っているのを見ました。

私はそれが何であるかを知っていますset -x。しかし、試してみると-xe何も変わらないようです。

それが何であるかを知っている人はいますか?私はそれに関する文書が見つからないようです。

ベストアンサー1

この文書は次の場所にあります。4.3.1 組み込みコレクション

-eは次のとおりです。

単一の単純コマンド(単純コマンドを参照)、リスト(リストを参照)、または複合コマンド(複合コマンドを参照)で構成できるパイプライン(パイプラインを参照)がゼロ以外の状態を返す場合は、すぐに終了します。失敗したコマンドが while キーワードまたは Until キーワードの直後に続くコマンドのリストの一部であるか、if ステートメントのテストの一部であるか、&& または ||内で実行されるコマンドの場合、シェルは終了しません。最後の&&または||後続のコマンドを除いて、パイプライン内のすべてのコマンドをリストするか、コマンドの戻り状態が!に反転されます。 -e が省略されたときにコマンドが失敗したため、サブシェルの外部の複合コマンドがゼロ以外の状態を返した場合、シェルは終了しません。 ERR トラップが設定されると、シェルが終了する前に実行されます。

このオプションは、シェル環境と各サブシェル環境(コマンド実行環境を参照)に個別に適用され、サブシェルのすべてのコマンドを実行する前にサブシェルを終了できます。

-eを省略したコンテキストで複合コマンドまたはシェル関数が実行されている場合、-eが設定されてコマンドがエラーを返しても、複合コマンドまたは関数の本文内で実行されるすべてのコマンドは-e設定の影響を受けません。状態。 -eを省略したコンテキストで複合コマンドまたはシェル関数が実行されたときに-eを設定すると、関数呼び出しを含む複合コマンドまたはコマンドが完了するまで設定は適用されません。

おすすめ記事