首页 > 解决方案 > 在 GNU 并行中链接作业

问题描述

我正在尝试使用名为TOOL.sh. 我的并行输入值为 0.01、0.02 和 0.05。

仅此命令就应该为每个--maf输入生成四个输出文件。我只想保留第四个文件,即日志文件,并在生成它们后立即删除其他三个文件(.bim, .bed, .fam),如下所示。如何在下面编写此代码以使其正常工作?

PLINKfile=file
DIRplink=$PWD
OUTFILE="PWD/test"
parallel -j3 TOOL.sh --bfile ${PLINKfile} --maf {} --out $DIRplink/${OUTFILE}_{} | 
rm "${DIRplink}/${OUTFLE}_{}.bed" && 
rm "${DIRplink}/${OUTFLE}_{}.bim" &&
rm "${DIRplink}/${OUTFLE}_{}.fam"
::: 0.01 0.02 0.05

标签: linuxshellparallel-processinggnu

解决方案


问题是外壳会解析|and &&,但您希望它们成为parallel执行命令的一部分。为此,只需将其括在双引号中:

parallel -j3 "TOOL.sh --bfile ${PLINKfile} --maf {} --out $DIRplink/${OUTFILE}_{};
              rm ${DIRplink}/${OUTFILE}_{}.{bed,bim,fam}"

或者,只需在parallel完成后一次性删除所有不需要的文件:

parallel -j3 TOOL.sh --bfile ${PLINKfile} --maf {} --out $DIRplink/${OUTFILE}_{}
rm ${DIRplink}/${OUTFILE}_*.{bed,bim,fam}

推荐阅读