2011-12-01 98 views
1

我找不到之間的區別:雙方括號和單方括號之間的區別是什麼[和[[以及等號=和==?

[ $foo = b* ] 
[ $foo == b* ] 

[[ $foo = b* ]] 
[[ $foo == b* ]] 
+0

在[tdlp](http://tldp.org/LDP/abs/html/testconstructs.html)上做一些閱讀,如果有什麼不明白的地方,請回到這裏。這也是一個非常好的[鏈接](http://mywiki.wooledge.org/BashPitfalls) –

+0

http://ss64.com/bash/syntax-brackets.html –

+1

看看http://stackoverflow.com/questions/669452/is-preferred-bash-scripts –

回答

-2

差異與[[]]之間====之間[]檢查this

差異

是賦值運算符

==平等檢查操作或條件操作者

+1

不完全。在'[]'和'[[]]'中,'='是一個字符串相等比較而不是賦值。 '[[]]'和'[]'的某些實現也接受'=='作爲同義詞。 (p.s.我不確定「條件運算符」的含義。) –

0

[] vs [[ ]]一般在Is [[ ]] preferable over [ ] in bash scripts?,所以我們不要碰它。

= VS ==

[]內

所以只能使用=,因爲它既便攜又短。

內部[[]]

[[ ]]不是POSIX,所以我們只能引用man bash

它說下CONDITIONAL EXPRESSIONS===是相同的內部[[ ]]並且兩個做圖案匹配作爲在「化合物命令」中描述。

然後「化合物命令」是用於水珠膨脹相同的模式,例如:

[[ 'abcde' = ?b[cC]* ]] && echo true 

可能與extglob擴展。

請注意,您必須而不是引用模式:它不會像往常一樣擴展到文件。如果引用它,則會失去匹配魔法的模式並獲得文字字符。

相關問題