重複した投稿ならお詫び申し上げます。誰かがすでにこの質問に質問/回答をしていることを確認するために検索しようとしましたが、何も見つかりませんでした。
||
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-fi
。echo
ただし、端末に書き込みエラーがある場合にのみコマンドは失敗します。したがって、この違いは重要ではなく、&&
and||
形式がショートカットとして頻繁に使用されます。
答え3
これは「または」条件です。
簡単な例を見てみましょう。
cmd1 || cmd2
cmd1が成功した場合(つまり、終了コード0)、cmd2は実行されません。 cmd2 は cmd1 が失敗した場合にのみ実行されます。
これが終了コードを返すことが重要な理由の1つです。
しかし、この機能は非常に古いUNIXシェルにあります。以前のshにはIF文がなかったからです。もちろん、これはcshが存在する前のことでした。