GNU 与可变序列并行?

GNU parallel with variable sequence?

我想 运行 一个程序 prog 使用 GNU 的 parallel 并行,其参数采用序列中的值。例如:

parallel prog ::: {1..100}

但是,我事先不知道序列的上限,所以我希望能够做类似的事情:

parallel prog ::: {1..$x}

其中 $x 是我将在某处计算的数字。我怎样才能做到这一点?

假设 seq 程序(或类似程序)可用,

parallel prog ::: $(seq 1 $x)

如果没有,你可以伪造它:

parallel prog ::: $(for ((i=1; i < x; i++)) do; echo $i; done)

正如 Ole 指出的那样,如果 $x 很大,那么生成的数字序列可能太大而无法在命令行中显示。在这种情况下,使用上述两种方法中的任何一种通过标准输入将参数提供给 parallel

seq 1 "$x" | parallel prog
for ((i=1; i<x; i++)) do; echo "$i"; done | parallel prog