Bash(1行):最初のコマンドが成功した場合は2番目のコマンドを実行し、それ以外の場合は3番目のコマンドを実行しますか?

Bash(1行):最初のコマンドが成功した場合は2番目のコマンドを実行し、それ以外の場合は3番目のコマンドを実行しますか?

SSHを介して2つのコマンドを順次実行したいと思います。対話型シェルはありません。 2番目のコマンドは最初のコマンドが成功した場合にのみ実行する必要がありますが、その行はスクリプト内にあるため、2番目のコマンドがこのように実行されない場合はユーザーフレンドリーなフィードバックを受けたいと思います。その後、スクリプトの残りの部分は引き続き実行される必要があるため、ここではexit待つことはできません。

&&たとえば、ブール演算子を使用して失敗した場合は実行をfoo && barブロックしbar、失敗した場合にのみ実行できることを知っています。ところがお互いにどう似合うかちょっと混乱しますね。foobar || bazbazbar

それらを追加します。

(SSH経由で実行され、インタラクティブシェルは必要ありません)

  1. 実装するfoo
  2. barfoo成功した場合にのみ実行
  3. bazfoo失敗した場合にのみ実行し、実行をブロックします。bar

ssh user@host "foo && bar || baz"

今説明した内容を実行する正しい方法ですか?

ベストアンサー1

あなたの例を使うfoo && bar || bazbazbar または foo失敗する。あなたの説明によると、これはあなたが望むものではありません。if目標を達成するために、次の説明を使用できます。

if foo; then
    bar
else
    baz
fi

または、一行で書きたい場合は、次のようにします。

if foo; then bar; else baz; fi

おすすめ記事