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)
您应该在行首拥有关闭标记。所以你的脚本应该是这样的:
#!/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 识别为块的结尾