我正在尝试在case语句中使用此正则表达式模式以匹配特定类型的ID,这可以传递给脚本。我需要将字母数字字符的确切数字与短划线进行匹配,以便将此消息ID与其他任何内容区分开来,这可以传递给此bash脚本。
邮件ID格式的示例:c7c3e910-c9d2-71e1-0999-0aec446b0000
#!/bin/bash
until [ -z "$1" ]
do
case "$1" in
"")
echo "No value passed"
;;
[a-z0-9]\{8\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{12\})
echo "Found message ID: $1"
;;
*)
echo "Server $1"
;;
esac
shift
done
答案 0 :(得分:4)
UUID由十六进制数字组成。
Case语句接受glob样式模式,而不是正则表达式(方括号中的字符范围可以,但花括号中的量词不起作用)。
您可以使用Bash正则表达式匹配来测试字符串。
pattern='[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}'
if [[ $1 =~ $pattern ]]
then
echo "found"
fi