Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux shell脚本停止错误_Linux_Shell - Fatal编程技术网

Linux shell脚本停止错误

Linux 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

我有下面的脚本,我希望脚本停止在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/LogVol00
在执行此部分之前,您需要在某处使用
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