1. ホーム
  2. bash

[解決済み】Bashの一重角括弧と二重角括弧の違いについて

2022-04-15 01:07:56

質問

についてのbashのサンプルを読んでいます。 if が、いくつかの例では角括弧が1つで書かれています。

if [ -f $param ]
then
  #...
fi

などは二重角括弧で囲んでください。

if [[ $? -ne 0 ]]
then
    start looking for errors in yourlog
fi

何が違うのでしょうか?

解決方法は?

シングル [] は posix シェルに準拠した条件テストです。

ダブル [[]] は、標準の [] で、bashや他のシェル(zshやkshなど)でサポートされています。これらは、(標準的な posix の操作だけでなく) 特別な操作をサポートします。たとえば || の代わりに -o との正規表現マッチングでは =~ . 相違点の詳細なリストは bash マニュアルの条件構文に関するセクション .

使用方法 [] シェル間でスクリプトの移植性を高めたい場合に使用します。使用方法 [[]] でサポートされていない条件式が必要な場合は [] で、ポータブルである必要はありません。