String 双方括号和单方括号[和[[以及等号=和=]之间的区别是什么?
我找不到以下两者之间的区别:String 双方括号和单方括号[和[[以及等号=和=]之间的区别是什么?,string,bash,testing,comparison,String,Bash,Testing,Comparison,我找不到以下两者之间的区别: [ $foo = b* ] [ $foo == b* ] [[ $foo = b* ]] [[ $foo == b* ]] 检查[]和[[]]之间的差异 =和= =是赋值运算符 =等式检查运算符或条件运算符[]vs[[]]]通常在中介绍,所以我们不要碰它 =vs=: 内部[] =是POSIX和 =是Bash定义的别名,请参见manbash 因此,只需使用=,因为它更便于携带,而且更短 内部[[]] [[]]不是POSIX,所以我们只参考man bash 它在
[ $foo = b* ]
[ $foo == b* ]
[[ $foo = b* ]]
[[ $foo == b* ]]
检查
[]
和[[]]
之间的差异
=
和=
=
是赋值运算符
=
等式检查运算符或条件运算符[]
vs[[]]]
通常在中介绍,所以我们不要碰它
=
vs=
:
内部[]
是POSIX和=
是Bash定义的别名,请参见=
manbash
=
,因为它更便于携带,而且更短
内部[[]]
[[]]
不是POSIX,所以我们只参考man bash
它在条件表达式下指出=
和=
在[[]]
中是相同的,并且都按照“复合命令”中所述进行模式匹配
然后,“复合命令”与用于全局扩展的模式相同,例如:
[[ 'abcde' = ?b[cC]* ]] && echo true
可能带有extglob
扩展名
请注意,您不能引用该模式:它不会像往常一样全局扩展到文件。如果您引用它,您将失去模式匹配的魔力并获得文字字符。在上做一些阅读,如果您不理解某些内容,请回到这里。这也是一个非常好的方法。请查看不完全。在[]
和[[]]
,=
是一个字符串相等比较,而不是赋值。[[]]
和一些[]
的实现也接受=
作为同义词。(另外,我不确定“条件运算符”是什么意思。)