我正在运行这个 bash 命令:
xe pbd-unplug uuid=$PBDUUID
如果结果存在 - 即如果变量 PBDUUID
不为空,那么我想运行另一个命令:
xe sr-forget uuid=$SRUUID
但是,如果变量为空,那么我想打印一条错误消息
错误:没有 PBD。
并让脚本立即退出(类似于 Python 中的 sys.exit()
)。
有没有办法将这个 if else then
合并成一行?另外,sys.exit()
的 bash 等价物是什么?
附加信息/评论:
关于 Dilettant 的评论,是的,该方法 (if [ -z ${PBDUUID} ]; then
) 也将起作用。我不知道。谢谢你。这似乎很直观。
最佳答案
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或 the processtree bash-hackers.org page 的“创建子外壳的操作”部分.
关于python - Bash if else 然后与 bash 版本的 sys.exit() 在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38192116/