如何在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[@]}}
答案 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