增量变量在gnu并行

时间:2017-07-10 15:48:09

标签: bash parallel-processing 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[@]}}

1 个答案:

答案 0 :(得分:1)

我想你想要这个:

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