GNU parallel:将每个作业输出到不带管道的不同文件

时间:2016-05-31 00:39:47

标签: gnu-parallel

  

这个问题与this other非常接近,但答案并非如此   对我有效,我认为由于我的shell脚本不适用于管道。

这是我的多作业命令:

parallel "./ClientesActivos-AP-N.sh -t 15" ::: $(seq 0 2)

我希望输出如下:

file0.out
file1.out
file2.out

我不知道应该在哪里放置重定向器 >

我没有运气测试过:

parallel ./ClientesActivos-AP-N.sh -t 15 ">" file{}.out ::: $(seq 0 1)
parallel ./ClientesActivos-AP-N.sh -t 15 ::: $(seq 0 1) ">" file{}.out

我的脚本以这种方式运作:

./ClientesActivos-AP-N.sh -t 15 0
./ClientesActivos-AP-N.sh -t 15 1
./ClientesActivos-AP-N.sh -t 15 2

因此,对于file0.outfile1.outfile2.out,输出将(对于上述手动非平行示例)。

每个作业重定向到其他文件的正确方法是什么?

进一步不成功的测试:

parallel --files file{}.out "./ClientesActivos-AP-N.sh -t 15" ::: $(seq 0 2)

1 个答案:

答案 0 :(得分:3)

我发现--dry-run选项是调试 GNU Parallel 命令的好方法。基本上,它告诉你如果没有实际做任何事情它会做什么 - 这也节省了我不得不写一个虚拟" ClientesActivos" 脚本,我们都知道我的西班牙语有多好#39 ; t ;-)

所以,对于你当前的问题,如果你试试这个,我认为它显示的是你想做的事情:

$ parallel --dry-run ./ClientesActivos-AP-N.sh -t 15 {} ">" file{}.out ::: {0..1}

./ClientesActivos-AP-N.sh -t 15 0 > file0.out
./ClientesActivos-AP-N.sh -t 15 1 > file1.out