Bash 中單方括號和雙方括號的區別

Fumbani Banda 2023年1月30日 2022年5月11日
  1. Bash 中的單方括號 [ ]
  2. Bash 中的雙方括號 [[ ]]
  3. Bash 中單方括號和雙方括號的區別
Bash 中單方括號和雙方括號的區別

本教程解釋了 Bash 中的單方括號和雙方括號及其區別。

Bash 中的單方括號 [ ]

單方括號 [ 是 Bash shell 中 test 命令的另一個名稱。test 命令是所有 POSIX shell 中的標準實用程式。 ][ 的最後一個引數。

下面的兩個指令碼表明 [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 大 3。指令碼將執行第一個 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 shell 上的內建 Bash 實用程式,而雙方括號不是命令。雙方括號是 Bash 中的擴充套件,改編自用作關鍵字的 ksh88

test 命令相比,雙方括號支援更多功能。與 test 命令不同,它支援模式匹配和引數擴充套件,並且不允許分詞。

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