2013-01-24 18 views

答えて

2

[[ ]]は、testキーワードに等しいです。私は質問の本当の意味を理解していれば

あなたはまた、[ ]を使用することができますが、[[ ]]は私にすべてのシェルタイプ

との互換性はありません、質問自体はよく定式化ではありません。
これらのブラケットは、注文決意のため、ここではあまりないことがありますが、bashの書式がそれらを必要とするため

編集

質問は、あまりにも、ので、私の答えを変更しています。

[[ ]]は、変数として読み込まれるテストの左側を引用することを心配する必要がないため、[ ]に対して使用されます。
また、<>

+0

ためhereを参照してください。 '。 – H2ONaCl

+0

あなたが正しいです、操作の順序は問題とは関係がないので、操作の順序を決定する '()'の言及を削除するために質問を編集しました。 – H2ONaCl

+0

@broiyan:あなたが移植可能であることを心配しなければ、誰かがテストの左側を引用することを心配する必要がないので、変数として読み取られるので、[[]] 'が優れていることを支持しています。さらに、「<' and '>」をエスケープする必要はありません。 – DonCallisto

8

をエスケープする必要はありません[[bashで[のはるかに多彩なバージョンです。

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

も、その実装は

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

異なっている私は `[]`、あなたは `[[]]を使用する理由は決してありませんと言っている使用することができます場合は良い説明

+2

それはそれより悪いです。 '[" $ "" "$ that"] 'はエラーを出さず、あなたが期待したものとまったく違う何かをするだけです。 (具体的には、 '$ this'で指定されたファイルに出力をリダイレクトし、' $ that'が空白でないかどうかをテストします。) –

関連する問題