2013-10-07 40 views
1

我真的很努力重做bash循环以便并行运行。替换并行程序的bash循环

循环是这样的:

for i in `cat names` 
do 
    cp $i.pqr dum.pqr 
    apbs parameters.in 
    mv dum.grd $i.grd 
    rm dum.grd 
done 

我想这没有成功。它告诉我“需要-c的参数”

for i in `cat names` 
do 
    cp $i.pqr dum.pqr 
    parallel -j8 apbs parameters.in 
    mv dum.grd $i.grd 
    rm dum.grd 
done 

任何人都可以告诉我我的错误吗?

+0

有什么确切的错误信息? “for”循环对于再现问题真的有必要吗? – tripleee

回答

0

我认为apbs需要'dum.pqr'并将其变成'dum.grd'。所以如果两个apbs同时运行,他们将覆盖dum.grd。你需要确保名称是唯一的。也许使用迪尔斯:

func my_apbs { 
    mkdir $1 
    cp $1.pqr $1/dum.pqr 
    cd $1 
    apbs parameters.in 
    mv dum.grd ../$1.grd 
    cd .. 
    rm -r $1 
} 
export -f my_apbs 
parallel my_apbs :::: names 

你没写是否已经观看了介绍视频https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1或通过本教程走:http://www.gnu.org/software/parallel/parallel_tutorial.html