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

Fumbani Banda 2023年1月30日 Bash
  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 命令不同,它支援模式匹配和引數擴充套件,並且不允許分詞。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: 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