我需要确保传递给我的shell脚本的变量与某个模式匹配。 var x必须是AA-X.X.XX(即AA-1.2.33)的形式。如果不匹配,我需要退出。
有什么想法吗?
答案 0 :(得分:1)
Bash直接支持正则表达式。
if ! [[ $mystring ~= $pattern ]]; then
exit
fi
答案 1 :(得分:0)
有关=~
二元运算符的完整说明,请参阅GNU Bash手册中的Conditional Constructs。举个例子:
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
答案 2 :(得分:0)
可以直接在bash中使用
var=AA-1.2.33
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
0
var=AA-1.2.3355
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
1