我需要确保传递给我的 shell 脚本的变量与某个模式匹配。var x 必须采用 AA-XXXX 的形式(即 AA-1.2.33)。如果不匹配,我需要退出。
有任何想法吗?
Bash 直接支持正则表达式。
if ! [[ $mystring ~= $pattern ]]; then
exit
fi
有关二元运算符的完整说明,请参阅GNU Bash 手册中的条件构造。=~
举个例子:
good_string='AA-1.2.33'
bad_string='BB.11.222.333'
regex='^AA-[[:digit:]]\.[[:digit:]]\.[[:digit:]][[:digit:]]$'
[[ "$good_string" =~ $regex ]]
echo $? # 0
[[ "$bad_string" =~ $regex ]]
echo $? # 1
可以直接在 bash 中执行
var=AA-1.2.33
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
0
var=AA-1.2.3355
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
1