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
我想 运行 一个程序 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