2013-10-07 88 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