下面的代码
number=1
if [[ $number =~ [0-9] ]]
then
echo matched
fi
作品。但是,如果我尝试在正则表达式中使用引号,它就会停止:
number=1
if [[ $number =~ "[0-9]" ]]
then
echo matched
fi
I tried "\[0-9\]"
, 也。我缺少什么?
有趣的是,bash 高级脚本编写指南 http://www.tldp.org/LDP/abs/html/abs-guide.html#REGEXMATCHREF建议这应该有效。
bash 版本 3.2.39。
已更改3.1 至 3.2 之间 http://tiswww.case.edu/php/chet/bash/NEWS。猜猜高级指南需要更新。
这是对新功能的简要描述
自 bash-3.2 以来添加的功能
发布 bash-3.1。一如既往,
手册页(doc/bash.1)是这个地方
寻找完整的描述。
- Bash 中的新功能
snip
F。引用字符串参数
[[ 命令的 =~ 运算符现在强制
字符串匹配,与其他模式匹配运算符一样。
遗憾的是,这将破坏使用脚本的现有引用,除非您有能力将模式存储在变量中并直接使用它们而不是正则表达式。下面的例子。
$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
$ number=2
$ if [[ $number =~ "[0-9]" ]]; then echo match; fi
$ if [[ $number =~ [0-9] ]]; then echo match; fi
match
$ re="[0-9]"
$ if [[ $number =~ $re ]]; then echo MATCH; fi
MATCH
$ bash --version
GNU bash, version 3.00.0(1)-release (i586-suse-linux)
Copyright (C) 2004 Free Software Foundation, Inc.
$ number=2
$ if [[ $number =~ "[0-9]" ]]; then echo match; fi
match
$ if [[ "$number" =~ [0-9] ]]; then echo match; fi
match
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)