双方括号和单方括号之间有什么区别[和[[以及等号=和==?

时间:2011-12-01 15:09:56

标签: string bash testing comparison

我找不到:

之间的区别
[ $foo = b* ]
[ $foo == b* ]

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

2 个答案:

答案 0 :(得分:0)

<{> [] vs [[ ]]一般涵盖在Is [[ ]] preferable over [ ] in bash scripts?,所以我们不要碰它。

= vs ==

内部[]

因此,只使用=,因为它更便携,更短。

在[[]]

[[ ]]不是POSIX,因此我们仅提及man bash

它在CONDITIONAL EXPRESSIONS下表示===[[ ]]内是相同的,并且两者都按照“复合命令”中所述进行模式匹配。

然后“复合命令”与用于全局扩展的模式相同,例如:

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

可能带有extglob个扩展名。

请注意,您必须引用模式:它不会像往常一样将glob扩展为文件。如果你引用它,你将失去模式匹配魔法并获得文字字符。

答案 1 :(得分:-2)

[][[]]之间的差异检查this

===

之间的差异

=是赋值运算符

==等式检查运算符OR条件运算符