在gnu并行中增加var

increment var in gnu parallel

如何在 parallel 中使用增量变量?请注意输出文件名(前缀)中的 $int 变量 。我意识到顺序可以改变,这很好,但有用的是让整数作为下游工作输出的前缀(${array[@]} 的长度改变)。

我正在尝试将此 for 循环转换为一个很好的并行 cmd 到集群上的 运行。我真正喜欢的一个功能是,如果任何作业具有此处描述的非零退出状态,则退出此过程:https://www.gnu.org/software/parallel/parallel_tutorial.html#Termination

发件人:

var='infile.txt'
int=1
for file in ${array[@]}; do
  script.rb -i $var -o $int_$file
  ((int+=1))
done

收件人:

parallel --halt soon,fail=1 --jobs $NSLOTS script.sh -i $var -o int_{} ::: ${array[@]}

我在想像 {1..array_len} 这样的构造可能会起到计数器的作用,但事实并非如此:parallel --halt soon,fail=1 --jobs $NSLOTS script.sh -i $var -o {2}_{1} :::: ${array[@]} {1..${#array[@]}}

我想你想要这个:

parallel --halt soon,fail=1 script.rb -i $var -o {#}_{} ::: ${array[@]}

其中 {#} 是作业序号。


这是一个简单的例子:

parallel -k echo "param="{} ",sequence="{#} ::: 2 4 6 8

param=2 ,sequence=1
param=4 ,sequence=2
param=6 ,sequence=3
param=8 ,sequence=4