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

How to generate random numbers then pass it to a command line argument?

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

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 到 return 逗号分隔的 10 个随机整数列表。

你可以这样做

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

来自bash manpage

RANDOM

Each time this parameter is referenced, it expands to a random integer between 0 and 32767. Assigning a value to this variable seeds the random number generator. If RANDOM is unset, it loses its special properties, even if it is subsequently reset.

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

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

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

其中 -i 1-8000 是范围,-n 4 是您想要 return 的数量。