Bash if else然后在一行中使用bash版本的sys.exit()

我正在运行这个bash命令:

xe pbd-unplug uuid=$PBDUUID 

如果结果存在 – 即如果variablesPBDUUID不为空,那么我想运行另一个命令:

 xe sr-forget uuid=$SRUUID 

但是,如果variables是空白,那么我想打印一个错误消息

Error: No PBD.

并让脚本立即退出(类似于Python中的sys.exit() )。

有没有办法将这个结合起来呢? 另外,什么是sys.exit()的bash等价物?

其他信息/评论:

关于Dilettant的评论,是的这种方法( if [ -z ${PBDUUID} ]; then )也将工作。 我没有意识到这一点。 谢谢你。 这似乎很直观。

Solutions Collecting From Web of "Bash if else然后在一行中使用bash版本的sys.exit()"

 if xe pbd-unplug uuid="$PBDUUID"; then xe sr-forget "uuid=$SRUUID"; else echo "Error: No PBD."; exit 1; fi 

更可读,那是:

 if xe pbd-unplug uuid="$PBDUUID"; then xe sr-forget "uuid=$SRUUID" else echo "Error: No PBD." >&2 exit 1 fi 

顺便说一句,如果你的目标是检查一个变量是否为空白,那看起来更像下面这样:

 if [ -z "$PDBUUID" ]; then xe pdb-unplug uuid="$PDBUUID" && xe sr-forget "uuid=$SRUUID" else echo "Error: No PBD." >&2 exit 1 fi 

如果exit没有按照你的意图执行,那么这个代码大概是在一个子shell中运行,因此exit是退出这个子shell而不是你的脚本作为一个整体。 请参阅Assesshell bash-hackers.org页面上的SubShell或“创建子shell的操作”部分。