【问题标题】:Problem generating random string in Azure Cloud Shell Bash在 Azure Cloud Shell Bash 中生成随机字符串的问题
【发布时间】: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个字符随机值

标签: azure azure-cloud-shell


【解决方案1】:

该命令在个人 Linux 操作系统和 Azure Cloud Shell Bash 中都能正常工作。

Azure Cloud Shell Bash:

个人 Linux 操作系统:

我认为它们之间不会有区别。 Azure Cloud Shell 只是在 Ubuntu 16.04 LTS 上运行的 VM。看看the features of the Azure Cloud Shell

更新:

你可以看看issue,答案可能显示了该命令在 Azure Cloud Shell 中不起作用的原因。据我所知,这不是一个高性能系统。否则,使用cat 不是获取随机字符串的好主意。我建议head

【讨论】:

  • 是的。我的工作正常,但我的原始代码没有。第一个代码 sn-p 是惯用的 Bash,应该可以在任何地方使用。 cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 10 | head -n 1 不起作用
  • @JamesP 查看更新,我认为这是可能的原因。
  • @JamesP 还有问题吗?它解决了你的问题吗?
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
相关资源
最近更新 更多