このquestion in the answer from Kyle Brandtで、[[ ]]
の構造は、「bash組み込みテストコマンド」として記述されています。以下は例として示されている。bashでの二重角括弧の意味
なぜ大文字の二重角括弧[[ ]]
が必要ですか?
このquestion in the answer from Kyle Brandtで、[[ ]]
の構造は、「bash組み込みテストコマンド」として記述されています。以下は例として示されている。bashでの二重角括弧の意味
なぜ大文字の二重角括弧[[ ]]
が必要ですか?
[[ ]]
は、test
キーワードに等しいです。私は質問の本当の意味を理解していれば
あなたはまた、[ ]
を使用することができますが、[[ ]]
は私にすべてのシェルタイプ
との互換性はありません、質問自体はよく定式化ではありません。
これらのブラケットは、注文決意のため、ここではあまりないことがありますが、bashの書式がそれらを必要とするため
質問は、あまりにも、ので、私の答えを変更しています。
[[ ]]
は、変数として読み込まれるテストの左側を引用することを心配する必要がないため、[ ]
に対して使用されます。
また、<
と>
が
をエスケープする必要はありません[[bashで[のはるかに多彩なバージョンです。
たとえば、[...]ではなく[[...]]テスト構造を使用すると、スクリプトで多くの論理エラーを防ぐことができます。たとえば、& &、||、<、および>演算子は、[]構文内でエラーを出すにもかかわらず、[[]]テスト内で動作します。
も、その実装は
-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword
異なっている私は `[]`、あなたは `[[]]を使用する理由は決してありませんと言っている使用することができます場合は良い説明
それはそれより悪いです。 '[" $ "" "$ that"] 'はエラーを出さず、あなたが期待したものとまったく違う何かをするだけです。 (具体的には、 '$ this'で指定されたファイルに出力をリダイレクトし、' $ that'が空白でないかどうかをテストします。) –
ためhereを参照してください。 '。 – H2ONaCl
あなたが正しいです、操作の順序は問題とは関係がないので、操作の順序を決定する '()'の言及を削除するために質問を編集しました。 – H2ONaCl
@broiyan:あなたが移植可能であることを心配しなければ、誰かがテストの左側を引用することを心配する必要がないので、変数として読み取られるので、[[]] 'が優れていることを支持しています。さらに、「<' and '>」をエスケープする必要はありません。 – DonCallisto