GNU 并行:将每个作业输出到不同的文件而无需管道

Sop*_*rez 2 gnu-parallel

This question与this other非常接近,但该答案对我无效,我认为由于我的shell脚本不适用于管道。

这是我的多任务命令:

parallel "./ClientesActivos-AP-N.sh -t 15" ::: $(seq 0 2)
Run Code Online (Sandbox Code Playgroud)

我想输出到类似的东西:

file0.out
file1.out
file2.out
Run Code Online (Sandbox Code Playgroud)

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

我已经测试过没有运气:

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

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

./ClientesActivos-AP-N.sh -t 15 0
./ClientesActivos-AP-N.sh -t 15 1
./ClientesActivos-AP-N.sh -t 15 2
Run Code Online (Sandbox Code Playgroud)

所以输出会(对于上面的手动无与伦比的例子)到file0.out,file1.outfile2.out

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

进一步失败的测试:

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

Mar*_*ell 6

我发现该--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
Run Code Online (Sandbox Code Playgroud)