bash - 在 bash 脚本中的特定范围内创建一系列不同的随机数

标签 bash shell

我有一个文件,其中包含编号为 0 到 149 的条目。我正在编写一个 bash 脚本,它从这 150 个条目中随机选择 15 个并从中创建另一个文件。
我尝试使用随机数生成器:

var=$RANDOM
var=$[ $var % 150 ]

我使用 var 选择了这 15 个条目。但我希望所有这些条目都不同。有时同一个条目会被拾取两次。有没有办法在一定范围内创建随机数序列(在我的示例中为 0-149)?

最佳答案

使用shuf -i生成随机数字列表。

$ entries=($(shuf -i 0-149 -n 15))
$ echo "${entries[@]}"
55 96 80 109 46 58 135 29 64 97 93 26 28 116 0

如果您希望它们按顺序排列,请添加 sort -n混合。

$ entries=($(shuf -i 0-149 -n 15 | sort -n))
$ echo "${entries[@]}"
12 22 45 49 54 66 78 79 83 93 118 119 124 140 147

要遍历这些值,请执行以下操作:

for entry in "${entries[@]}"; do
    echo "$entry"
done

关于bash - 在 bash 脚本中的特定范围内创建一系列不同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651014/

相关文章:

macos - 使用 Bash 将目录中的所有文件大写

bash - 使用带有 "${parameter:-word}"参数扩展的引号

用于查找二项式系数的 Bash 脚本

perl - 在 perl 中使用 bash 命令

bash - 在shell脚本中查找shell可执行文件目录的平台独立方式是什么?

linux - Linux 命令中参数前的破折号有必要吗?

linux - 保留变量中的空格并与 SED 交换

php - Shell 命令适用于命令行,但不适用于 PHP exec

bash - 如何使用CTRL + C退出并杀死正在运行的Docker容器?

linux - 如何使用 bash 脚本备份目录