用于脚本和输入参数的bash

问题描述:

任何人都可以帮助我修改脚本。因为它不起作用。这里有三个脚本。 1)pb.sh,使用delphicpp_release软件读取1brs.ab.sh并输出为1brs.ab.out用于脚本和输入参数的bash

2)1brs.ab.sh,用于输入参数,其中a.sh(另一个用于蛋白质结构的脚本),chramm.siz,charmm.crg是用于运行delphicpp_release软件的参数剩余部分的原子大小和电荷等文件。

3)a.sh,用于读取几个蛋白质结构,它们将位于同一个目录中。

我script_1 = pb.sh:

./delphicpp_release 1brs.ab.sh >1brs.ab.out 
    echo PB-Energy-AB = $(grep -oP '(?<=Energy> Corrected:).*' 1brs.ab.out) >>PB-energy.dat 

    cat PB-energy.dat 

script_2 = 1brs.ab.sh:

in(pdb,file="a.sh") 
in(siz,file="charmm.siz") 
in(crg,file="charmm.crg") 
perfil=70 
scale=2.0 
indi=4 
exdi=80.0 
prbrad=1.4 
salt=0.15 
bndcon=2 
maxc=0.0001 
linit=800 
energy(s) 

script_3 = a.sh:

for i in $(seq 90000 20 90040); do 
    $i.pdb 
done 
+0

我不认为人们可以从你的问题中推断出你正在努力实现的目标2)你到目前为止所做的事情。另外,它看起来不像我的bash脚本。例如什么是'(crg,file =“charmm.crg”)' – sjsam

+0

1)我正在尝试使用测量我的系统在参数文件(a.para,b.para)中提及的绑定能量的软件。 )90000.ab.pdb,90020.ab.pdb .... 2)charmm.siz,charmm.crg是输入参数文件。 3)在我的脚本中,所有内容都是相同的,只有90000.ab.pdb,90020.ab.pdb,90040.ab.pdb .... 100000.ab.pdb将被输入。 – parash

正如我们不” t知道software是什么,有点像

for ((i=90000;i<=100000;i+=20)); do 
    ./software << " DATA_END" > 1brs.$i.a.out 
    scale=2.0 
    in(pdb,file="../$i.ab.pdb") 
    in(siz,file="charmm.siz") 
    in(crg,file="charmm.crg") 
    indi=z 
    exdi=x 
    prbrad=y 
    DATA_END 
    echo Energy-A = $(grep -oP '(?<=Energy>:).*' 1brs.$i.a.out) >>PB-energy.dat 
done 

更POSIX外壳兼容的版本

i=90000 
while ((i<=100000)); do 
    ... 
    ((i+=20)); 
done 

编辑:无定界符

{ 
    echo 'scale=2.0' 
    echo 'in(pdb,file="../'"$i"'.ab.pdb")' 
    echo 'in(siz,file="charmm.siz")' 
    echo 'in(crg,file="charmm.crg")' 
    echo 'indi=z' 
    echo 'exdi=x' 
    echo 'prbrad=y' 
} > $i.ab.sh 
./software <$i.ab.sh >$i.ab.out 

但问题是改变了我不知道去了解它。

+0

软件是将要运行的输入参数,并给予能量 – parash

+0

亲爱的主席先生二进制软件,它给我的语法错误:坏的循环变量 – parash

+0

亲爱的主席先生,这是什么命令做?因为这里应该是“a.para”,软件如何读取参数文件 – parash