在這個question in the answer from Kyle Brandt這個[[ ]]
構造被描述爲「bash內置測試命令」。以下示例爲例。bash中雙方括號的含義
if [[ ($a -gt 2) && ($a -lt 5) ]]; then ...
爲什麼需要雙方括號,字面意思是[[ ]]
?
在這個question in the answer from Kyle Brandt這個[[ ]]
構造被描述爲「bash內置測試命令」。以下示例爲例。bash中雙方括號的含義
if [[ ($a -gt 2) && ($a -lt 5) ]]; then ...
爲什麼需要雙方括號,字面意思是[[ ]]
?
[[ ]]
等於test
關鍵字。
您還可以使用[ ]
但[[ ]]
並非與所有shell類型
對我來說兼容的,如果我沒有理解問題的真正意義,問題本身沒有很好地配製。
這些支架必須待在這裏與其說是爲了確定,但由於在bash大綱要求他們
問題發生變化,所以我的答案了。
[[ ]]
用於反對[ ]
,因爲您不必擔心引用將作爲變量讀取的測試的左側。
此外,<
和>
不需要轉義
[[是[在bash中更通用的版本]。
例如,使用[[]]測試結構,而不是可以防止腳本中的許多邏輯錯誤。例如,儘管在[]構造中給出了一個錯誤,但是在[[]]測試中可以使用& &,||,<和>運算符。
也,其實現方式是不同的
-bash-3.2$ type [
[ is a shell builtin
-bash-3.2$ type [[
[[ is a shell keyword
參考here一個很好的解釋
它比這更糟; '[「$ this」>「$那個」]'不會給出錯誤,它只會做一些完全不同的事情。 (具體來說:它會將輸出重定向到'$ this'指定的文件,然後測試'$ that'是否爲非空白。) –
如果我可以用'[]',你說從來就沒有理由使用'[[]] '。 – H2ONaCl
你是對的,操作的順序與問題無關,所以我編輯了這個問題,刪除了任何提及'()'確定操作的順序。 – H2ONaCl
@broiyan:如果你不必擔心可移植性,有人支持'[[]]'更好,因爲你不必擔心引用測試的左手邊將被讀爲變量。此外,'<' and '>'不需要轉義 – DonCallisto