在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
如何在 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