测试模式的变量

时间:2013-06-06 14:16:35

标签: regex bash

我需要确保传递给我的shell脚本的变量与某个模式匹配。 var x必须是AA-X.X.XX(即AA-1.2.33)的形式。如果不匹配,我需要退出。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

Bash直接支持正则表达式。

if ! [[ $mystring ~= $pattern ]]; then
    exit
fi

答案 1 :(得分:0)

使用Bash的双支架正则表达式测试

有关=~二元运算符的完整说明,请参阅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