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

标签 string bash testing comparison

我找不到两者之间的区别:

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

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

最佳答案

[][[ ]] 一般情况下在 Is [[ ]] preferable over [ ] in bash scripts? 中介绍了所以我们不要碰它。

===:

在 [ ] 内

所以只使用 = 因为它更便携而且更短。

在 [[ ]] 内

[[ ]] 不是 POSIX,因此我们仅引用 man bash

它在 CONDITIONAL EXPRESSIONS 下说 ===[[ ]] 和两者都按照“复合命令”中的描述进行模式匹配。

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

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

可能带有 extglob 扩展。

请注意,您必须引用该模式:它不会像往常一样扩展到文件。如果你引用它,你就失去了模式匹配的魔力,得到的是文字字符。

关于string - 双方括号和单方括号 [ 和 [[ 以及等号 = 和 == 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8343551/

相关文章:

python - 如何使用 for 循环反转此字符串

bash - awk 提取列但仅从一行中提取

bash - x | 之间的区别y 和 y <(x) 在 bash 中?

linux - 递归地将文件夹和文件重命名为子目录名称并移动文件

python - 如何让 nose 将案例输出记录到单独的文件中?

java - Mockito 模拟无法正常工作

testing - 使用 Metamask 进行测试的 Cypress 测试方法

python - 字符串匹配在 python 中不起作用

java - 如何在不引起重复的情况下查找和替换

java - Java中从字符串中心解析信息