String 使用bash脚本生成边界不同的字符串

String 使用bash脚本生成边界不同的字符串,string,bash,random,String,Bash,Random,我想用bash脚本生成长度在1-4之间的字符串。我知道如何创建具有设置长度的字符串,但我想知道是否对以下命令进行了轻微更改,以使其在1-4长度之间进行选择 cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 4 这将创建标准长度为4的数字/字母字符串。有什么办法能满足我的需要吗?不是最聪明的解决方案,但我想这应该行得通 cat /dev/urandom | tr -dc A-Za-z0-9 | head -c "$(shuf -i 1-4 -n 1)"

我想用bash脚本生成长度在1-4之间的字符串。我知道如何创建具有设置长度的字符串,但我想知道是否对以下命令进行了轻微更改,以使其在1-4长度之间进行选择

cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 4

这将创建标准长度为4的数字/字母字符串。有什么办法能满足我的需要吗?

不是最聪明的解决方案,但我想这应该行得通

cat /dev/urandom | tr -dc A-Za-z0-9 | head -c "$(shuf -i 1-4 -n 1)"

这不是最聪明的解决方案,但我想这应该行得通

cat /dev/urandom | tr -dc A-Za-z0-9 | head -c "$(shuf -i 1-4 -n 1)"

这很简单:也可以使用随机数/字符生成器生成head-c的参数

在bash中,可以将内置变量$RANDOM与算术表达式一起使用。随机数不是很好,尤其是在使用%someBigNumber时,但对于大多数情况来说已经足够了:

< /dev/urandom tr -dc A-Za-z0-9 | head -c "$((RANDOM % 4 + 1))"

这很简单:也可以使用随机数/字符生成器生成head-c的参数

在bash中,可以将内置变量$RANDOM与算术表达式一起使用。随机数不是很好,尤其是在使用%someBigNumber时,但对于大多数情况来说已经足够了:

< /dev/urandom tr -dc A-Za-z0-9 | head -c "$((RANDOM % 4 + 1))"

这里提供了一种生成n个随机字符串的方法,这些字符串的最小长度为随机长度,最大长度为随机长度:

它读取随机[:alnum:]字母数字字符流;每次使用不同的随机量,并将其存储在数组中

此方法通过以下方式最大限度地提高效率:

Bash内置函数的使用。 对外部命令tr的单个调用。 从/dev/uradom快速随机生成器设备读取随机无符号字节。 !/usr/bin/env bash count:要生成的字符串数 l_min:字符串的最小长度 l_max:字符串的最大长度 声明-i计数=10最小值=4最大值=8 包含随机字符串的数组 声明-a随机字符串= 声明-i=0 而[$i-lt$count];做 声明-i l=$RANDOM%l\u max-l\u min+1+l\u min read-r-N$l随机字符串[i] i=$i+1
完成<这里提供了一种生成n个随机最小长度到最大长度的随机字符串的方法:

它读取随机[:alnum:]字母数字字符流;每次使用不同的随机量,并将其存储在数组中

此方法通过以下方式最大限度地提高效率:

Bash内置函数的使用。 对外部命令tr的单个调用。 从/dev/uradom快速随机生成器设备读取随机无符号字节。 !/usr/bin/env bash count:要生成的字符串数 l_min:字符串的最小长度 l_max:字符串的最大长度 声明-i计数=10最小值=4最大值=8 包含随机字符串的数组 声明-a随机字符串= 声明-i=0 而[$i-lt$count];做 声明-i l=$RANDOM%l\u max-l\u min+1+l\u min read-r-N$l随机字符串[i] i=$i+1
done<应该可以工作,但是因为我的程序已经花了大约10秒来完成我想要它做的事情,我担心在这里添加另一个随机函数可能会使执行时间比我想要的还要长。我真的希望有一个我不知道的修复方法,基于改变头部。。部分。无用的猫。还要使用character class和switch locale跨系统获得一致的结果:LC_ALL=POSIX tr-dc'[:alnum:]应该可以工作,但是由于我的程序已经需要大约10秒的时间来完成我希望它完成的任务,我担心在这里添加另一个随机函数可能会进一步增加执行时间。我真的希望有一个我不知道的修复方法,基于改变头部。。部分。无用的猫。还可以使用字符类和开关区域设置来跨系统获得一致的结果:LC_ALL=POSIX tr-dc'[:alnum:'