Linux shell脚本停止错误
我有下面的脚本,我希望脚本停止在x行上执行,如果x行遇到错误,我该怎么做 pvcreate /dev/$1 vgextend VolGroup00 /dev/$1 lvextend --size +$2 /dev/VolGroup00/LogVol00 resize2fs /dev/VolGroup00/LogVol00 pvcreate/dev/$1 vgextend VolGroup00/dev/$1 lvextend——大小+2美元/开发/VolGroup00/LogVol00 调整大小2FS/dev/VolGroup00/LogVol00Linux shell脚本停止错误,linux,shell,Linux,Shell,我有下面的脚本,我希望脚本停止在x行上执行,如果x行遇到错误,我该怎么做 pvcreate /dev/$1 vgextend VolGroup00 /dev/$1 lvextend --size +$2 /dev/VolGroup00/LogVol00 resize2fs /dev/VolGroup00/LogVol00 pvcreate/dev/$1 vgextend VolGroup00/dev/$1 lvextend——大小+2美元/开发/VolGroup00/LogVol00 调整大小2
在执行此部分之前,您需要在某处使用
set-e
。将以下内容添加到顶部
set -e
执行该行后,如果任何行返回错误代码,shell将退出<代码>设置+e将再次关闭此功能(即,无论返回的错误代码如何,都将切换回继续)
有关更多详细信息,请参阅。您必须查询每个步骤,并检查其返回代码。这意味着您必须了解每个查询的返回码是什么(每个查询的返回码可能不同)。下面的示例检查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
Set-e可能有些过分,因为某些错误在某些情况下是可以容忍的。在下面的示例中,如果文件不存在,rm将返回一个错误,但可以继续(是的,我知道我们可以有条件地删除,但该示例旨在说明所提出的观点。)
我建议分别标记这些可能失败的命令,如
rmsomefile | | true
。在这种情况下,set-e
不会触发。
# delete the file, it it exists
rm thefile
# create the file
touch thefile