【发布时间】:2020-06-02 16:32:16
【问题描述】:
我正在尝试在 Bash 中生成一定长度的随机字符串。这适用于我可以测试的所有其他 Bash shell(Ubuntu 18.04 LTS 和 Debian 10)
$ cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 10 | head -n 1
n8a4wxvb01
$
cat /dev/urandom – 无穷无尽的字节流
tr -dc ‘a-z0-9’ - 只返回小写字符和数字
fold -w 10 – 在 10 个字符处中断
head -n 1 – 返回流的第一行
在 Azure Cloud Shell Bash 中,这会挂起。它返回随机字符串,但从不退出。打印值后,对head -n 1 的调用永远不会退出。
我有一个解决方法,但它似乎倒退了
head -n 10 /dev/urandom | tr -dc 'a-z0-9' | fold -w 10 | head -n 1
【问题讨论】:
-
“打印值后对 head -n 1 的调用永远不会退出”是什么意思?
-
如果您在 Ubuntu 18.04 LTS 上运行该命令,您将获得一个单一的值并且该命令完成。如果您在 Azure Cloud Shell Bash 中尝试此操作,您将看到该命令返回一个值但随后挂起。您只能使用 ctrl-c 退出。我让这个例子变得很简单,这样任何人都可以剪切和粘贴它并尝试它。
-
如果有任何疑问是对
head -n 1的调用,只需将其从语句末尾删除,您将看到源源不断的10个字符随机值