&&チェーンコマンド:Bがゼロ以外の終了状態を返した場合、CはA&&C内で実行されますか? [コピー]

&&チェーンコマンド:Bがゼロ以外の終了状態を返した場合、CはA&&C内で実行されますか? [コピー]
A && B ; C
  • A は終了ステータス 0 を返します。

  • B はゼロ以外の終了状態を返します。

  • C が実行されると、終了ステータス 0 が返されます。

したがって、次の2つの状況のうちどれが発生しますか(どちらの場合もAは当然実行されます)。

  1. BashはBとCを実行します。

  2. BashはBを実行しますが、Cは実行しません。

この質問を拡張して、代替(1または2)の動作を許可するようにチェーンをどのように変更できますか?

編集する:

私は&∧の意味について尋ねることではありません。 。

私はAとBがとにかく処刑されることを知っています。残りのケースは、Bがゼロ以外の終了状態を返すため、Cを無視するか、Bをスキップして独自の利点に基づいてCを再評価することです。

ベストアンサー1

A && B ; C

A は終了ステータス 0 を返します。

この場合、nextが実行され、Bの終了値に関係なく実行されます。ABC

シーケンスグループは(A && B) ; CasではありませんA && (B ; C)。必要に応じて、中かっこまたは括弧(サブシェル)を使用してグループ化を追加できます。

残りのケースは、Bがゼロ以外の終了状態を返すので、BとCの両方が無視されることです。

これはあまり意味がありません。 B 自分の終了状態によっては B を無視できません。

または、BをスキップしてCの利点を再評価してみてください。

Aがfalse(0以外)の状態を返す場合にのみBをスキップし、true(0)の状態を返す場合はスキップしません。

数値真理値に対するシェルの理解は、ゼロが偽のC言語と比較して反対です。

Aがfalse(0以外)の状態を返すと、Bは実行されませんが、Cは実行され続けます。

おすすめ記事