shell脚本停止错误

我有下面的脚本,我希望脚本停止执行x行,如果行x遇到错误,我该怎么做?

 pvcreate / dev / $ 1
 vgextend VolGroup00 / dev / $ 1
 lvextend --size + $ 2 / dev / VolGroup00 / LogVol00
 resize2fs / dev / VolGroup00 / LogVol00

在执行此部分之前,您需要在某处使用set -e

将以下内容添加到顶部。

 set -e 

执行该行后,如果任何行返回错误代码,shell将退出。 set +e将再次关闭它(即切换回继续,无论任何错误返回代码)。

有关详细信息,请参阅http://www.davidpashley.com/articles/writing-robust-shell-scripts.html

你将不得不查询每一步你必须检查他们的返回码。 这意味着你将不得不了解每个查询的返回码是什么(可能每个都不相同)。 下面的例子检查vgextend错误代码-1,然后返回-1本身。

 pvcreate /dev/$1 vgextend VolGroup00 /dev/$1 if [ $? == -1 ]; then echo "vgextend returned an error" exit -1; fi lvextend --size +$2 /dev/VolGroup00/LogVol00 resize2fs /dev/VolGroup00/LogVol00 

设置-e可能是矫枉过正的,因为在某些情况下某些错误是可以容忍的。 在下面的例子中,如果文件不存在,rm会返回一个错误,但是可以继续(是的,我知道我们可以进行条件删除,但是这个例子是为了说明这一点)。

 # delete the file, it it exists rm thefile # create the file touch thefile