shell 中的 cat 错误

Sou*_*ary -2 shell-script cat here-document

我正在使用以下代码在 20 个文件夹中迭代写入文件以进行作业调度。

#!/bin/bash

for i in {1..20}
do
        cd conf$i
        cp ../nvt.mdp $PWD
        cp ../topol.top $PWD
        grompp -v -f nvt.mdp -c conf$i.gro -p topol.top -o conf_nvt$i.tpr >> nvt.log
        cat<<KHIK >> run_nvt$i.pbs
        #!/bin/bash
        #PBS -l nodes=1:ppn=16
        #PBS -l walltime=120:00:00
        #PBS -N GROMACS:TAUAT_P
        #PBS -q blaze
        #PBS -j oe
        #PBS -V
        cd \$PBS_O_WORKDIR
        export I_MPI_DEVICE=rdma
        /home/apps/ics/impi/latest/bin64/mpiexec.hydra /home/braf/md/gromacs-4.5.6/bin/mdrun_mpi -deffnm conf_nvt$i
        KHIK
        cd ..
done
Run Code Online (Sandbox Code Playgroud)

它发出了一个奇怪的错误。你能告诉我我需要做哪些改变吗?

./umbrnvt.sh: line 22: warning: here-document at line 9 delimited by end-of-file (wanted `KHIK')
./umbrnvt.sh: line 23: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

Rom*_*nov 7

您应该在行首拥有关闭标记。所以你的脚本应该是这样的:

#!/bin/bash

for i in {1..20}
do
        cd conf$i
        cp ../nvt.mdp $PWD
        cp ../topol.top $PWD
        grompp -v -f nvt.mdp -c conf$i.gro -p topol.top -o conf_nvt$i.tpr >> nvt.log
        cat<<KHIK >> run_nvt$i.pbs
        #!/bin/bash
        #PBS -l nodes=1:ppn=16
        #PBS -l walltime=120:00:00
        #PBS -N GROMACS:TAUAT_P
        #PBS -q blaze
        #PBS -j oe
        #PBS -V
        cd \$PBS_O_WORKDIR
        export I_MPI_DEVICE=rdma
        /home/apps/ics/impi/latest/bin64/mpiexec.hydra /home/braf/md/gromacs-4.5.6/bin/mdrun_mpi -deffnm conf_nvt$i
KHIK
        cd ..   
done 
Run Code Online (Sandbox Code Playgroud)

否则 bash 不会将 KHIK 识别为块的结尾

  • @SouparnoAdhikary,如果您觉得这个答案有帮助,请随时支持和/或将其标记为完整答案:) (2认同)