我找不到:
之间的区别[ $foo = b* ]
[ $foo == b* ]
[[ $foo = b* ]]
[[ $foo == b* ]]
答案 0 :(得分:0)
[]
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
个扩展名。
请注意,您必须不引用模式:它不会像往常一样将glob扩展为文件。如果你引用它,你将失去模式匹配魔法并获得文字字符。
答案 1 :(得分:-2)