Bash での一重と二重の角括弧の違い

Fumbani Banda 2023年1月30日
  1. Bash における一重角括弧 [ ] について
  2. Bash の二重角括弧 [[ ]] について
  3. Bash における一角括弧と二角括弧の違い
Bash での一重と二重の角括弧の違い

このチュートリアルでは、Bash に含まれる単一の角括弧と二重の角括弧とその違いについて説明します。

Bash における一重角括弧 [ ] について

単一の角括弧 [ は、Bash シェルの test コマンドの別名です。test コマンドは、すべての POSIX シェルの標準ユーティリティです。][ の最後の引数です。

以下の 2つのスクリプトは、[test コマンドが類似していることを示しています。最初のスクリプトは、一重の角括弧を使用して、変数 $y の値が変数 $x の値より大きいかどうかを確認し、test コマンドの評価から返された結果に応じて出力を出力します。

この場合、$y 変数の値は $x 変数の値よりも大きくなります。

#!/bin/bash

x=2
y=3

if [ $y -gt $x ]
then
    echo "$y is greater than $x"
else
    echo "$x is greater than $y"
fi

スクリプトを実行すると、次のメッセージが標準出力に出力されます。

3 is greater than 2

このスクリプトは、一重の角括弧の代わりに test コマンドを使用します。スクリプトは、$y 変数の値が $x 変数の値より大きいかどうかを確認します。

test が true を返す場合、スクリプトは最初の echo コマンドを実行し、test が false を返す場合、else セクションの echo コマンドを実行します。

この場合、$y 変数の値は $x 変数 2 よりも大きくなります。2。スクリプトは最初の echo コマンドを実行します。

#!/bin/bash

x=2
y=3

if test $y -gt $x
then
    echo "$y is greater than $x"
else
    echo "$x is greater than $y"
fi

スクリプトは、次の出力を標準出力に出力します。

3 is greater than 2

Bash の二重角括弧 [[ ]] について

二重角括弧 [[]] は、ksh88 から採用された test コマンドを拡張したもので、より汎用性があります。二重角括弧は、パターンマッチやパラメータの展開に使用でき、単語の分割はできません。

二重角括弧を使うことで,Bash スクリプトの論理的な誤りを避けることができます.二重角括弧の中では、&&||<> の各演算子が動作しますが、test コマンドではエラーが発生します。

以下のスクリプトでは、算術評価に二重角かっこを使用しています。二重角かっこは、$x 変数の値が $y 変数の値と等しいかどうかをテストします。

テストは true を返し、スクリプトの最初の echo コマンドを実行します。

#!/bin/bash

x=10
y=10

if [[ $x -eq $y ]]
then
    echo "\$x is equal to \$y"
else
    echo "\$x is not equal to \$y"
fi

スクリプトを実行すると、標準端末に次の出力が生成されます。

$x is equal to $y

Bash における一角括弧と二角括弧の違い

test コマンドは、標準の POSIX シェルに組み込まれている Bash ユーティリティですが、二重角かっこはコマンドではありません。二重角かっこは、キーワードとして使用される ksh88 を応用した Bash の拡張機能です。

二重角かっこは、test コマンドと比較してより多くの機能をサポートします。test コマンドとは異なり、パターンマッチングとパラメータ拡張をサポートし、単語分割を許可しません。

著者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub