68

我遇到了代码所在的shell脚本

for line in $LIST_ARRAY;do
if [[ $LIST_ARRAY =~ $line ]]
then
echo "true"
....
...
.

=~在这种情况下有什么用?

4

1 回答 1

80

它是允许在 if 语句中使用正则表达式的 Equal Tilde 运算符。

额外的二元运算符 =~ 可用,其优先级与 == 和 != 相同。使用时,运算符右侧的字符串被视为扩展正则表达式并进行相应匹配(如在 regex(3) 中)。如果字符串与模式匹配,则返回值为 0,否则为 1。如果正则表达式在语法上不正确,则条件表达式的返回值为 2。如果启用了 shell 选项 nocasematch,则不考虑字母字符的大小写进行匹配。可以引用模式的任何部分以强制将其作为字符串匹配。

http://linux.die.net/man/1/bash

于 2012-09-17T07:25:55.167 回答