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.out和file2.out。
将每个作业重定向到不同文件的正确方法是什么?
进一步失败的测试:
parallel --files file{}.out "./ClientesActivos-AP-N.sh -t 15" ::: $(seq 0 2)
Run Code Online (Sandbox Code Playgroud)
我发现该--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)