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 命令不同,它支援模式匹配和引數擴充套件,並且不允許分詞。
