我正在尝试测试字符串$uuid
是否为UUID。我已经编写了此脚本,但由于某种原因它无法正常工作:
uuid="7632f5ab-4bac-11e6-bcb7-0cc47a6c4dbd"
if [[ $uuid =~ ^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$ ]]; then
echo "true"
else
echo "false"
fi
您的正则表达式不接受小写字母作为有效字母。这是固定版本:
#!/bin/bash
uuid="7632f5ab-4bac-11e6-bcb7-0cc47a6c4dbd"
if [[ $uuid =~ ^\{?[A-F0-9a-f]{8}-[A-F0-9a-f]{4}-[A-F0-9a-f]{4}-[A-F0-9a-f]{4}-[A-F0-9a-f]{12}\}?$ ]]; then
echo "true"
else
echo "false"
fi
首先,你才真正需要被搜索A-F
不是A-Z
因为包含的UUID十六进制数字。
请注意a-f
在每个字符类中的添加。您的版本将拒绝所有以小写字母打印的UUID。现在,这个新版本对我来说很好用。另一种解决方案是仅使用大写的UUID,而不要使用小写的UUID。[A-Z0-9]
由于这些原因,您的班级已替换为[A-F0-9a-f]
。
出于安全考虑,请参阅Ekeyme Mo的帖子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句