GNU/Linux >> Linux の 問題 >  >> Linux

ショートサーキットコマンドのシーケンスで失敗した場合、bash がエラーで停止しないのはなぜですか?

ここでのロジックは、 && を使用することです すでに エラーチェック。 if 内で bash が失敗を処理しないのと同じ方法 set -e であっても、中止する価値がある条件 .

コマンドを括弧で囲むと、実際にはそれらのコマンドをサブシェル内で実行しているため、スクリプト自体はそのサブシェルの戻りのみを認識します。つまり、&& を認識しません。


リファレンスマニュアルを引用:

<ブロック引用>

失敗したコマンドが、while または until キーワードの直後のコマンド リストの一部である場合、if ステートメントのテストの一部である場合、&&または || で実行されるコマンドの一部である場合、シェルは終了しません。最後の &&または || に続くコマンドを除くリスト、パイプライン内の最後のコマンド以外のコマンド、またはコマンドの戻りステータスが ! で反転されている場合。


Linux
  1. なぜBashはスペースで始まるコマンドを保存しないのですか?

  2. BashスクリプトのRmコマンドは変数では機能しませんか?

  3. bash sh - コマンドが見つかりません

  1. yum-config-managerコマンドが見つかりません[修正]

  2. ブータブル USB の作成に 'dd' が機能しないのはなぜですか?

  3. この ldapadd コマンドが無効な構文エラーで終了するのはなぜですか?

  1. c_rehash:コマンドが見つかりませんエラー–解決策

  2. Bashでコマンドが見つかりません修正されました

  3. 一部のコマンドでBashプロセス置換が機能しないのはなぜですか?