如何在GNU Parallel中传递分配的pdb文件名给csh脚本
解决GNU Parallel传递固定参数与迭代文件名的问题
原始问题场景
使用以下csh命令并行运行脚本时,myParallelScript.csh能接收ARR变量中的所有固定参数,但无法获取每个进程对应的pdb文件名:
set ARR = `echo $x $homeDir $pdbID $ligID $ligNum $dirName $cutoff` parallel -j 20 myParallelScript.csh "$ARR" ::: *.pdb
修正后的命令
在"$ARR"前添加{}占位符,即可让每个并行进程拿到对应的pdb文件名:
set ARR = `echo $x $homeDir $pdbID $ligID $ligNum $dirName $cutoff` parallel -j 20 myParallelScript.csh {} "$ARR" ::: *.pdb
原理说明
{}是GNU Parallel的默认占位符,会被自动替换为:::后列表中的当前元素(这里就是每个pdb文件名)。调整参数顺序后,脚本会先接收到专属的pdb文件名,再接收ARR里的固定参数,满足并行任务的需求。
内容的提问来源于stack exchange,提问作者Brian Bennion
相关产品推荐
相关产品推荐

