yae*_*ael 15 linux bash shell-script random uuid
我想创建随机唯一编号(UUID)如下
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
Run Code Online (Sandbox Code Playgroud)
首先我试过这个
$ rndnum=` echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM"-"echo $RANDOM`
$ echo $rndnum
30380-echo 21875-echo 14791-echo 32193-echo 11503
Run Code Online (Sandbox Code Playgroud)
创建以下内容的正确方法f是什么(任何数字在哪里)?
ffffffff-ffff-ffff-ffff-ffffffffffff
Run Code Online (Sandbox Code Playgroud)
Hax*_*iel 42
在 Linux 上,util-linux/util-linux-ng包提供了一个生成 UUID 的命令:uuidgen.
$ uuidgen
5528f550-6559-4d61-9054-efb5a16a4de0
Run Code Online (Sandbox Code Playgroud)
引用手册:
uuidgen 程序使用
libuuid(3) 库创建(并打印)一个新的通用唯一标识符 (UUID) 。可以合理地认为新的 UUID 在本地系统上创建的所有 UUID 中以及过去和将来在其他系统上创建的 UUID 中是唯一的。uuidgen 可以生成两种类型的 UUID:基于时间的 UUID 和基于随机的 UUID。默认情况下,如果存在高质量的随机数生成器,uuidgen 将生成基于随机的 UUID。否则,它将选择基于时间的 UUID。可以使用
-ror-t选项强制生成这两种 UUID 类型之一。
附录:OP 在评论中提供了Presto DB 文档的链接。经过一番搜索,我发现了这个相关的讨论,其中明确提到该node.id属性确实是一个 UUID。
在评论中添加froschutz提供的信息:
作为uuidgen/libuuid方法的替代方法,您可以使用 Linux 内核本身公开的接口来生成 UUID:
$ cat /proc/sys/kernel/random/uuid
00db2531-365c-415c-86f7-503a35fafa58
Run Code Online (Sandbox Code Playgroud)
每次请求都会重新生成 UUID。
正如 @frostschutz 提到的,您可以使用无依赖的解决方案:
cat /proc/sys/kernel/random/uuid
Run Code Online (Sandbox Code Playgroud)
或保存变量
UUID=$(cat /proc/sys/kernel/random/uuid)
Run Code Online (Sandbox Code Playgroud)
在 Bash 中你可以简化为:
UUID=$(< /proc/sys/kernel/random/uuid)
Run Code Online (Sandbox Code Playgroud)