一个bash脚本中的多个任务

时间:2015-01-09 07:12:14

标签: bash eof

我正在尝试在一个bash脚本中执行三个任务。

我所做的编码是:

#!/bin/bash

(cd TRAJ_OctylGlcTryp_C1/
&&
cpptraj zOctylgluTryC1.prmtop << EOF
trajin reImaged-OctylgluTryC1.nc 1 70000 500
trajout reImaged-OctylgluTryC1-500.nc netcdf
EOF 
&& 
cd ../)

这意味着,首先进入目录TRAJ_OctylGlcTryp_C1并选择几帧模拟数据,最后退出文件夹。

但是我得到这样的错误

./run_Select500Frames.sh: line 4: syntax error near unexpected token `&&'
./run_Select500Frames.sh: line 4: `&& '

有没有办法摆脱这个错误? 感谢。

1 个答案:

答案 0 :(得分:2)

你可以这样简单地写出来:

#!/bin/bash

set -eu

pushd TRAJ_OctylGlcTryp_C1/ > /dev/null

cpptraj zOctylgluTryC1.prmtop << EOF
trajin reImaged-OctylgluTryC1.nc 1 70000 500
trajout reImaged-OctylgluTryC1-500.nc netcdf
EOF

popd > /dev/null

我建议总是使用新的Bash脚本顶部的set -eu。这样,如果命令失败,脚本将自行停止。从那里开始,我选择使用pushdpopd作为最后恢复旧工作目录的更可靠的方法,其余的很容易。完全没有&&