【发布时间】:2013-06-06 14:16:34
【问题描述】:
我需要确保传递给我的 shell 脚本的变量与某个模式匹配。 var x 必须采用 AA-X.X.XX 的形式(即 AA-1.2.33)。如果不匹配,我需要退出。
有什么想法吗?
【问题讨论】:
-
到目前为止你有什么?
我需要确保传递给我的 shell 脚本的变量与某个模式匹配。 var x 必须采用 AA-X.X.XX 的形式(即 AA-1.2.33)。如果不匹配,我需要退出。
有什么想法吗?
【问题讨论】:
Bash 直接支持正则表达式。
if ! [[ $mystring ~= $pattern ]]; then
exit
fi
【讨论】:
请参阅 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
【讨论】:
直接在 bash 中执行
var=AA-1.2.33
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
0
var=AA-1.2.3355
[[ $var =~ ^AA-.\..\...$ ]]
echo $?
1
【讨论】:
if [[ $myString == AA-* ]] then echo $? # 0 echo "hurray!" else echo $? # 0 echo "nope" fi