1

我真的在重做一个 bash for 循环以并行运行。

循环是这样的:

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

谁能告诉我我的错误?

4

1 回答 1

0

我假设 apbs 采用“dum.pqr”并将其转换为“dum.grd”。所以如果2个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

于 2013-10-07T15:36:18.837 回答