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

バッシュ演算子の違い[[Vs[Vs(Vs((?

これらの演算子がbashで使用された場合にどのように異なるか(括弧、二重括弧、括弧、および二重括弧)について少し混乱しています。

[[ , [ , ( , ((

私は人々がこのようなifステートメントでそれらを使用するのを見てきました:

if [[condition]]

if [condition]

if ((condition))

if (condition)

承認された回答:

ボーンのようなシェルでは、 if ステートメントは通常、次のようになります

if
   command-list1
then
   command-list2
else
   command-list3
fi

then command-list1の終了コードの場合に句が実行されます コマンドのリストはゼロです。終了コードがゼロ以外の場合、 else 句が実行されます。 command-list1
単純または複雑にすることができます。たとえば、演算子;の1つで区切られた1つ以上のパイプラインのシーケンスにすることができます。 、 && || または改行。 if 以下に示す条件は、 command-list1の特殊なケースです。 :

  1. if [condition]

    [ 従来のtestの別名です 指図。 [ /テスト 標準のPOSIXユーティリティです。すべてのPOSIXシェルには組み込みがあります(ただし、POSIX²では必須ではありません)。 test コマンドは、終了コードと ifを設定します ステートメントはそれに応じて動作します。一般的なテストは、ファイルが存在するかどうか、または1つの数値が別の数値と等しいかどうかです。

  2. if [[condition]]

    これは、 testの新しいアップグレードされたバリエーションです。 ¹kshから そのbash zsh ヤシュbusyboxsh また、サポートします。この[[...]] コンストラクトは、終了コードと ifも設定します ステートメントはそれに応じて動作します。その拡張機能の中で、文字列がワイルドカードパターンと一致するかどうかをテストできます(busyboxsh ではありません)。 。

  3. if((condition))

    別のksh bashする拡張機能 およびzsh また、サポートします。これは算術を実行します。計算の結果、終了コードが設定され、 if ステートメントはそれに応じて動作します。算術計算の結果がゼロ以外の場合は、ゼロ(true)の終了コードを返します。 [[...]]のように 、このフォームはPOSIXではないため、移植性はありません。

  4. if(コマンド)

    これは、サブシェルでコマンドを実行します。コマンドが完了すると、終了コードと ifが設定されます。 ステートメントはそれに応じて機能します。

    このようなサブシェルを使用する一般的な理由は、コマンドの副作用を制限するためです。 コマンドの場合 シェルの環境に必要な変数の割り当てまたはその他の変更。このような変更は、サブシェルが完了した後も残りません。

  5. ifコマンド

    コマンドが実行され、 if ステートメントは、その終了コードに従って機能します。

関連:システム管理者が変更を拒否した場合、ログインシェルとしてbashを使用するにはどうすればよいですか?


Linux
  1. Linuxのlocateコマンドとfindコマンドの違いは何ですか

  2. 従来の Linux fork-exec での _exit() と exit() の使用の違いは何ですか?

  3. #!/usr/bin/env bash と #!/usr/bin/bash の違いは何ですか?

  1. コマンドライン(bash)の「And」の違い??

  2. Bashの「評価」コマンド?

  3. Bashスクリプトの実行とソースの違いは何ですか?

  1. 組み込みコマンドとそうでないコマンドの違いは?

  2. Sudo Su –とSudo Su —の違いは何ですか?

  3. 配管とコマンド拡張の違いは?