Bashで[対[[(単一括弧と二重括弧)をいつ使用する必要がありますか? [コピー]

Bashで[対[[(単一括弧と二重括弧)をいつ使用する必要がありますか? [コピー]

重複の可能性:
シングルまたはダブルカッコの使用 - bash

単一のステントはいつ使用するべきですか?[

いつ二重括弧を使用する必要がありますか?[[

どちらもPOSIXに準拠していますか?

答え1

単一の角かっこは通常、外部コマンドで実装される伝統的な形式です。二重括弧は、以下のbash(およびkshとzsh)拡張です。いいえPOSIXで使用され、別のプロセスを使用せずに構文がよりきれいであるという利点があります(下記参照)。

構文の違いの1つは、リダイレクト演算子として読み取られないように、<and>演算子(注:標準POSIXではない)をエスケープしたり引用符で囲む必要がないことです。また、[文字列の1つが空である場合、またはハイフンで始まる場合は、いくつかのトリックが必要です。これがスクリプトがこのようなことをするのを見る理由です。[ "x$ASD" == xValue ]一方、bashでは簡単に使用できます[[ $ASD == Value ]]。 1つだけテストするPOSIX互換コマンドには、「x」トリックが必ずしも必要ではありません。この問題もっと学ぶ。

バッシュFAQ違いの詳細。これも返信を受けました。他のスタック交換サイトから。

答え2

ただ[( test)POSIXにあります。[[以下を除く予約語実装では使用できます。 Bashは強化されたテスト演算子として機能します[[。これらのスクリプトを特別に書く場合は、使用する方がより強力で安全なので、bash常にBashを使用してください。ただし、POSIXを対象とする場合は、パラメータを必ず引用して使用する必要があり、パラメータを4つ以上使用しないでください。[[[sh[[

関連情報