-3

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

有任何想法吗?

4

3 回答 3

1

Bash 直接支持正则表达式。

if ! [[ $mystring ~= $pattern ]]; then
    exit
fi
于 2013-06-06T14:21:17.997 回答
0

使用 Bash 的双括号正则表达式测试

有关二元运算符的完整说明,请参阅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
于 2013-06-06T14:22:37.840 回答
0

可以直接在 bash 中执行

var=AA-1.2.33
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
0
var=AA-1.2.3355
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
1
于 2013-06-06T14:24:02.007 回答