如何生成随机数然后将其传递给命令行参数?

时间:2021-03-14 18:04:44

标签: bash shell command-line-arguments

例如,如果我有以下命令:

python generate.py --outdir=out --trunc=1 --seeds=128,8755,90,543468

我想使用 bash 生成随机数并将它们放在 seeds 参数中,并使种子位于特定间隔(例如 1-8000)之间。像这样:

rand_seed_gen= im_a_func_that_generates_4_random_seeds # pseudo code
python generate.py --outdir=out --trunc=1 --seeds=rand_seed_gen

编辑: 另外,有没有一种方法可以将随机整数的数量相乘而不显式地单独传递每个整数?例如(同样是伪代码):${RANDOM} * 10 返回逗号分隔的 10 个随机整数列表。

1 个答案:

答案 0 :(得分:1)

你可以这样做

python generate.py --outdir=out --trunc=1 --seeds=${RANDOM},${RANDOM},${RANDOM}

来自bash manpage

<块引用>

随机

每次引用这个参数时,都会扩展为一个随机整数 0 到 32767 之间。给这个变量赋值 随机数生成器。如果 RANDOM 未设置,它会失去它的特殊性 属性,即使它随后被重置。

但是如果你需要设置一个范围,你可以做的是

# Generate random numbers, replacing nullbytes with commas
randvars=$(shuf -z -i 1-8000 -n 4 | tr '\0' ',')
# Delete the last comma
randvars=${randvars::-1}

python generate.py --outdir=out --trunc=1 --seeds=${randvars}

其中 -i 1-8000 是范围,-n 4 是您想要返回的金额。