GNU 并行:将每个作业输出到没有管道的不同文件

GNU parallel: output each job to a different file without pipes

This question is very close to this other, but that answer is not valid for me, I think due to my shell script does not work with pipes.

这是我的多任务命令:

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)

我发现 --dry-run 选项是调试 GNU Parallel 命令的好方法。基本上,它告诉你它会做什么而不实际做任何事情——它也让我不必写一个虚拟的 "ClientesActivos" 脚本而且我们都知道我的西班牙语不是很好;-)

所以,对于你的直接问题,如果你尝试这个,我认为它显示的是你想要做的:

$ 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