【问题标题】:Bash Script incorrectly matching all strings with regular expression [duplicate]Bash脚本错误地将所有字符串与正则表达式匹配[重复]
【发布时间】:2020-10-03 04:05:32
【问题描述】:

我试图使用 bash 脚本来验证一些字符串。无论我尝试了什么,脚本最终都会匹配作为输入提供的每个字符串,并在终端中打印 yes。例如, ABCDCD 应该打印自己和“是”,而 SSSS 应该只打印自己。但是,两者似乎都在打印自己并且“是”。

#! /bin/bash

read str
echo $str
reg1="AB[CD]*"
if [ $str=~$reg1 ];then
echo "yes"
fi

【问题讨论】:

标签: regex bash shell


【解决方案1】:

-您应该使用 [[ ]] 而不是 [] 进行正则表达式测试,== 或 =~ 之间有空格,建议不要对正则表达式进行双引号。 我觉得应该是

#! /bin/bash

read str
echo $str
reg1="AB[CD]*"
if [[ "$str" =~ $reg1 ]];then
echo "yes"
fi

【讨论】:

  • 请注意,使用正则表达式 AB[CD]*,它还会在输入如 ABDXYZ、ABXYZ、...时回显 yes,这意味着第三个字符可以是 C 或 D 或任何其他字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
相关资源
最近更新 更多