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

Bash の「test」コマンドでの「&&」と「&」の比較

& バックグラウンドでコマンドを実行し、ステータスに関係なく 0 を返します。

マニュアルページから:

<ブロック引用>

コマンドが制御演算子 &によって終了された場合、シェルはサブシェルのバックグラウンドでコマンドを実行します。シェルはコマンドの終了を待たず、戻りステータスは 0 です。コマンドは; で区切られています。順次実行されます。シェルは、各コマンドが順番に終了するのを待ちます。戻りステータスは、最後に実行されたコマンドの終了ステータスです。


コマンドが何であるかを見てください:

test -x examples.desktop  && echo $?

これは、examples.desktop かどうかを確認することを意味します 実行可能である場合は echo $? を実行します .

test -x examples.desktop  & echo $?

examples.desktop かどうかを確認することを意味します 「バックグラウンド」で実行可能です。次に echo $? を実行します .


&& の意味 そして & は本質的に異なります。

  • && とは Bash や他の多くのプログラミング言語では && 「AND」を意味します。そして、このようなコマンド実行コンテキストでは、&& の左右の項目を意味します この場合、順番に実行する必要があります。
  • & とは そして単一の & 前のコマンドが & のすぐ左にあることを意味します — バックグラウンドで実行する必要があります。

あなたの例を見てください:

[email protected]:~$ test -x examples.desktop  && echo $?
[email protected]:~$ test -x examples.desktop  & echo $?
[1] 2992
0

最初のコマンドは、構造上、実際には何も返しません。しかし、2 番目のコマンドは [1] 2992 を返します 2992 バックグラウンドで実行されているプロセス ID (PID) と 0 を参照します。 最初のコマンドの出力です。

2 番目のコマンドは test -x examples.desktop を実行しているだけなので バックグラウンドでは非常に迅速に行われるため、プロセス ID が生成されてすぐに消えてしまいます。


Linux
  1. 例を含むNohupコマンド

  2. LinuxでのJQコマンドと例

  3. 15 の例を含む究極の Bash Array チュートリアル

  1. 例を使用したBash待機コマンド

  2. 例を含むwcLinuxコマンド

  3. 例を使用したBashヒアドキュメントチュートリアル

  1. 例を使用してLinuxsleepコマンドを使用する方法

  2. Linuxでwhoコマンドを使用する方法と例

  3. Linuxipコマンドと例