Problem generating random string in Azure Cloud Shell Bash

James Pansarasa 1 Reputation point
2020-06-02T17:08:38.593+00:00

I am trying to generate a random string of a certain length in Bash. This works in every other Bash shell I could test (Ubuntu 18.04 LTS and Debian 10)

$ cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 10 | head -n 1
n8a4wxvb01
$

cat /dev/urandom – endless stream of bytes

tr -dc 'a-z0-9' – only return lowercase characters and digits

fold -w 10 – break at 10 characters

head -n 1 – return the first line of the stream

In the Azure Cloud Shell Bash, this hangs. It returns the random string but never exits. The call to head -n 1 never exits after printing the value.

I have a work around but it seems backwards

head -n 10 /dev/urandom | tr -dc 'a-z0-9' | fold -w 10 | head -n 1
Azure Cloud Services
Azure Cloud Services
An Azure platform as a service offer that is used to deploy web and cloud applications.
704 questions
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. BhargaviAnnadevara-MSFT 5,466 Reputation points
    2020-07-20T04:02:19.063+00:00

    Hello @James Pansarasa ,

    IMHO, this issue is not specific to Cloud Shell as such, and can happen with a *nix terminal.

    As you already found, this command should work on your machine and the Cloud Shell:

    head /dev/urandom | tr -dc a-z0-9 | fold -w 10 | head -n 1

    Here are some possible explanations:

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.