bash - 我如何使用 Bash 从字符串/数组中选择一个随机字符?

标签 bash random

我有一个例子,我试图在一组字母中随机生成一个字母(即 var="abcdefghijklmnopqrstuvwxyz")。

我会怎样:

var="abcdefghijklmnopqrstuvwxyz"

echo "${var}"

产量: some_letter

重点是,我试图从我选择的选项中自动生成一个随机字母。无论是数组还是字符串都没有关系。

最佳答案

var="abcdefghijklmnopqrstuvwxyz"
echo "${var:$(( RANDOM % ${#var} )):1}" # pick a 1 char substring starting at a random position

之所以可行,是因为:

  • ${var:START:LEN} 是一个 parameter expansion扩展为 $var
  • 的替代
  • ${#var}是参数扩展,扩展为字符串变量var内容的长度
  • $(( )) 创建算术上下文,在该上下文中假定非数字字符串引用变量名称(因此可以使用 RANDOM 而不是 $RANDOM).
  • $RANDOM,每次计算时,扩展为 0 到 32767 之间的随机整数。
  • $RANDOM % ${#var} 取该随机整数除以名为 var 的字符串中的字符数的余数;因此,它将介于 0 和 (length-of-var - 1) 之间,并且几乎随机划分(如果 length-of-var 不平均分成 32768,则某些字符被选中的机会会比其他字符略高)。

因此,${var:$(( RANDOM % ${#var} )) : 1} 将在每次求值时选择字符串内的一个位置,并扩展为其中包含单个字符范围。

关于bash - 我如何使用 Bash 从字符串/数组中选择一个随机字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837407/

相关文章:

linux - 如何删除第二列中的值出现特定次数的文件的行?

python - Python中的随机迭代

c++ - 不同位的随机对

python - 实现随机滚动表的Pythonic方法有哪些?

MYSQL 从两行中随机选择

围绕圆环的 Javascript 粒子动画

linux - 狂欢 : weird behavior with variable contain

java - 使用 monit 监控 shell 脚本

linux - 将命令输出保存到变量而不打印到标准输出

bash - 使用 bash 从颠覆中获取修订号