Bash
我什麼時候應該在 Bash 中使用 [ vs [[ (單括號還是雙括號)?
可能重複:
什麼時候應該使用單個支架?
[
什麼時候應該使用雙括號?
[[
兩者都符合 POSIX 標準嗎?
單括號是傳統形式,通常作為外部命令實現。雙括號是 bash(以及 ksh 和 zsh)擴展,不在POSIX 中,並且具有更簡潔的語法(見下文)和不使用單獨程序的優點。
語法差異之一是
<
和>
運算符(注意:不是標準的 POSIX)不需要轉義或引用以避免讀取為重定向運算符。此外,[
如果其中一個字元串可能為空或以連字元開頭,則需要一些技巧。這就是為什麼您會看到腳本執行類似的操作,[ "x$ASD" == xValue ]
而使用 bash 他們可以簡單地使用[[ $ASD == Value ]]
. 請注意,對於僅測試一件事的符合 POSIX 標準的命令,“x”技巧並不是絕對必要的,有關它的更多詳細資訊,請參閱此問題。bash 常見問題解答提供了有關差異的更多資訊。這也在另一個堆棧交換站點上得到了回答。