2013-01-24 113 views

回答

2

[[ ]]等於test關鍵字。

您還可以使用[ ][[ ]]並非與所有shell類型

對我來說兼容的,如果我沒有理解問題的真正意義,問題本身沒有很好地配製。
這些支架必須待在這裏與其說是爲了確定,但由於在bash大綱要求他們

編輯

問題發生變化,所以我的答案了。

[[ ]]用於反對[ ],因爲您不必擔心引用將作爲變量讀取的測試的左側。
此外,<>不需要轉義

+0

如果我可以用'[]',你說從來就沒有理由使用'[[]] '。 – H2ONaCl

+0

你是對的,操作的順序與問題無關,所以我編輯了這個問題,刪除了任何提及'()'確定操作的順序。 – H2ONaCl

+0

@broiyan:如果你不必擔心可移植性,有人支持'[[]]'更好,因爲你不必擔心引用測試的左手邊將被讀爲變量。此外,'<' and '>'不需要轉義 – DonCallisto

8

[[是[在bash中更通用的版本]。

例如,使用[[]]測試結構,而不是可以防止腳本中的許多邏輯錯誤。例如,儘管在[]構造中給出了一個錯誤,但是在[[]]測試中可以使用& &,||,<和>運算符。

也,其實現方式是不同的

-bash-3.2$ type [ 
[ is a shell builtin 
-bash-3.2$ type [[ 
[[ is a shell keyword 

參考here一個很好的解釋

+2

它比這更糟; '[「$ this」>「$那個」]'不會給出錯誤,它只會做一些完全不同的事情。 (具體來說:它會將輸出重定向到'$ this'指定的文件,然後測試'$ that'是否爲非空白。) –