【发布时间】: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
【问题讨论】:
-
[ ](test命令)不支持正则表达式比较;你需要一个带有[[ ]]的bash 条件表达式。=~运算符周围还需要空格。见"Difference between single and double square brackets in Bash" 和"Why equal to operator does not work if it is not surrounded by space?" -
另外,我建议使用shellcheck.net 来检查此类常见错误。