||どういう意味ですか?バッシュではどういう意味ですか? [コピー]

||どういう意味ですか?バッシュではどういう意味ですか? [コピー]

重複した投稿ならお詫び申し上げます。誰かがすでにこの質問に質問/回答をしていることを確認するために検索しようとしましたが、何も見つかりませんでした。

||Bashではどういう意味ですか?たとえば、ドライバの問題を解決する手順を調査中に、次のコマンドが見つかりました。

modprobe -q vmxnet3 && echo "vmxnet3 installed" || echo "vmxnet3 not installed"

最初の部分はmodprobeを照会し、「vmxnet3がインストールされています」という応答を返すことです(成功した戻りコードを受け取った場合)。しかし...最後の部分は何をしていますか?

答え1

||OR演算子です。左コマンドがエラーを返す場合にのみ、右コマンドを実行します。バラより&&と||演算子の使用は混乱しています。

あなたの例はbashには適していないと思います。右のセクションにはコマンドは||ありませんecho(この問題は解決しました。)

答え2

まるでカーニバル&&のように||制御演算子:

  • &&次の文の実行を示します。〜しない限り前のステートメントは正常に実行されます(終了コード0が返されます)。

  • ||次の文の実行を示します。〜しない限り前のステートメントが失敗しました(ゼロ以外の終了コードを返します)。

他の制御演算子は次のとおりです。

  • &前のステートメントがバックグラウンドで実行されることを示します。

  • ;前の文を実行し、完了後に次の文を実行し続けることを示します。

  • |前の文が実行され、その標準出力が次の文の標準入力に接続されることを示します。

組み合わせる&&||

&&||if-then-elseを置き換えるために組み合わせることができます。考慮する:

if some_command
then
    echo yes
else
    echo no
fi

上記は次のとおりです。

some_command && echo yes || echo no

コマンドが失敗した場合、2つが異なるため、同じではなく「似ている」と言いますecho yes。コマンドが失敗するとecho yes(ゼロ以外の戻りコードで終了)、echo noコマンドが実行されます。このバージョンではこれは発生しませんif-then-else-fiechoただし、端末に書き込みエラーがある場合にのみコマンドは失敗します。したがって、この違いは重要ではなく、&&and||形式がショートカットとして頻繁に使用されます。

答え3

これは「または」条件です。

簡単な例を見てみましょう。

 cmd1 || cmd2

cmd1が成功した場合(つまり、終了コード0)、cmd2は実行されません。 cmd2 は cmd1 が失敗した場合にのみ実行されます。

これが終了コードを返すことが重要な理由の1つです。

しかし、この機能は非常に古いUNIXシェルにあります。以前のshにはIF文がなかったからです。もちろん、これはcshが存在する前のことでした。

関連情報