加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 检查字符串是否为UUID

发布时间:2020-12-15 22:48:55 所属栏目:安全 来源:网络整理
导读:我试图测试字符串$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
我试图测试字符串$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的帖子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读