我找不到之間的區別:雙方括號和單方括號之間的區別是什麼[和[[以及等號=和==?
[ $foo = b* ]
[ $foo == b* ]
[[ $foo = b* ]]
[[ $foo == b* ]]
我找不到之間的區別:雙方括號和單方括號之間的區別是什麼[和[[以及等號=和==?
[ $foo = b* ]
[ $foo == b* ]
[[ $foo = b* ]]
[[ $foo == b* ]]
不完全。在'[]'和'[[]]'中,'='是一個字符串相等比較而不是賦值。 '[[]]'和'[]'的某些實現也接受'=='作爲同義詞。 (p.s.我不確定「條件運算符」的含義。) –
[]
vs [[ ]]
一般在Is [[ ]] preferable over [ ] in bash scripts?,所以我們不要碰它。
=
VS ==
:
[]內
=
是POSIX和checks if strings are equal==
是一個bash定義的別名它,見man bash
。所以只能使用=
,因爲它既便攜又短。
內部[[]]
[[ ]]
不是POSIX,所以我們只能引用man bash
。
它說下CONDITIONAL EXPRESSIONS
該=
和==
是相同的內部[[ ]]
並且兩個做圖案匹配作爲在「化合物命令」中描述。
然後「化合物命令」是用於水珠膨脹相同的模式,例如:
[[ 'abcde' = ?b[cC]* ]] && echo true
可能與extglob
擴展。
請注意,您必須而不是引用模式:它不會像往常一樣擴展到文件。如果引用它,則會失去匹配魔法的模式並獲得文字字符。
在[tdlp](http://tldp.org/LDP/abs/html/testconstructs.html)上做一些閱讀,如果有什麼不明白的地方,請回到這裏。這也是一個非常好的[鏈接](http://mywiki.wooledge.org/BashPitfalls) –
http://ss64.com/bash/syntax-brackets.html –
看看http://stackoverflow.com/questions/669452/is-preferred-bash-scripts –