Bash 中的子字符串:使用通配符 - 为什么变量的顺序是强制性的?

Bash 中的子字符串:使用通配符 - 为什么变量的顺序是强制性的?

我正在与Bash 中的子字符串- 使用通配符 -

下列:

if [[ "$LIST" == *"$SOURCE"* ]]

工作正常。

但只是玩弄(逆)

if [[ *"$SOURCE"* == "$LIST" ]]

不起作用

那么为什么*"$SOURCE"*一定要在右边声明呢?在其他 LP 中,何时==使用顺序并不重要。

答案1

当使用==操作员,

运算符右侧的字符串被视为模式

...所以*在它周围使用通配符是有效的。但是,当您交换操作数时, 会*成为您尝试匹配的字符串的一部分,这不是您想要的。

相关内容