11

Kyle Brandt からの回答のこの質問では、[[ ]]この構成は「bash 組み込みテスト コマンド」として説明されています。以下に例を示します。

  if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...

文字通り、二重角括弧が[[ ]]必要なのはなぜですか?

4

2 に答える 2

8

[[ は、bash の [ のより用途の広いバージョンです。

たとえば、[ [ ... ] ではなく [[ ... ]] テスト構造を使用すると、スクリプト内の多くの論理エラーを防ぐことができます。たとえば、&&、||、<、および > 演算子は、[[ ]] 構造内でエラーが発生するにもかかわらず、[[ ]] テスト内で機能します。

また、それらの実装は異なります

-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword

良い説明については、こちらを参照してください

于 2013-01-24T10:07:28.483 に答える
2

[[ ]]testキーワードと同じです。

も使用できますが、すべてのシェル タイプと互換性[ ]があるわけではありません[[ ]]

私にとって、質問の本当の意味を理解していれば、質問自体はうまく定式化されていません。
これらのブラケットは、順序を決定するためではなく、bash の概要で必要になるため、ここにある必要があります。

編集

質問が変わったので、私の答えも。

[[ ]][ ]変数として読み取られるテストの左側を引用することを心配する必要がないため、に対して使用されます。
さらに、エスケープする必要は<ありません>

于 2013-01-24T08:05:50.843 に答える