【发布时间】:2012-09-09 09:38:56
【问题描述】:
我遇到了一个shell脚本,代码是
for line in $LIST_ARRAY;do
if [[ $LIST_ARRAY =~ $line ]]
then
echo "true"
....
...
.
这种情况下=~有什么用?
【问题讨论】:
-
你使用 for 循环的方式,你应该把你的循环变量命名为
word而不是line
我遇到了一个shell脚本,代码是
for line in $LIST_ARRAY;do
if [[ $LIST_ARRAY =~ $line ]]
then
echo "true"
....
...
.
这种情况下=~有什么用?
【问题讨论】:
word 而不是line
这是允许在 if 语句中使用正则表达式的 Equal Tilde 运算符。
一个额外的二元运算符 =~ 可用,具有相同的 优先级为 == 和 !=。使用时,右边的字符串 该运算符被视为扩展正则表达式并匹配 相应地(如在 regex(3) 中)。如果字符串返回值为 0 匹配模式,否则为 1。如果正则表达式是 语法不正确,条件表达式的返回值为 2. 如果启用了 shell 选项 nocasematch,则不考虑字母字符的大小写进行匹配。的任何部分 可以引用模式以强制将其作为字符串匹配。
【讨论】: