我正在运行这个bash命令:
xe pbd-unplug uuid=$PBDUUID
如果结果存在 - 即如果变量PBDUUID
不为空,那么我想运行另一个命令:
xe sr-forget uuid=$SRUUID
但是,如果变量为空,那么我想打印一条错误消息
Error: No PBD.
并且脚本立即退出(类似于Python中的sys.exit()
)。
有没有办法将这个if else then
合并为一行?另外,什么是sys.exit()
的bash等价物?
其他信息/评论:
关于Dilettant的评论,是的,这种方法(if [ -z ${PBDUUID} ]; then
)也会起作用。我没有意识到这一点。谢谢你。这似乎非常直观。
答案 0 :(得分:2)
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而不是整个脚本。请参阅SubShell或"创建子shell的操作" the processtree bash-hackers.org page的一部分。