我很好奇为什么这段代码不匹配 - 采取“then”分支。回声“不匹配”你能告诉我吗?
#!/bin/bash
suffix="2"
if [[ $suffix =~ "^[0-9]+$" ]]
then
echo "match"
else
echo "no match"
fi
答案 0 :(得分:3)
在现代(3.2+)版本的bash中引用=
或=~
操作在[[ ]]
内的右侧使得字符串文字 - 即。不再是正则表达式或模式。
来自the manual:
可以引用模式的任何部分以强制引用的部分匹配为字符串。
对于支持=~
的版本中的一致行为(如果需要支持3.2之前的版本),接受的最佳做法是将正则表达式置于变量中,并在右侧使用该变量未加引号=~
:
re='^[0-9]+$'
[[ $suffix =~ $re ]]