python - Bash if else 然后与 bash 版本的 sys.exit() 在一行中

标签 python linux bash

我正在运行这个 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 而不是您的脚本作为所有的。参见 SubShellthe processtree bash-hackers.org page 的“创建子外壳的操作”部分.

关于python - Bash if else 然后与 bash 版本的 sys.exit() 在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38192116/

相关文章:

c - 如何改变C程序中SIGTERM的含义

c++ - OpenGL 不显示 2D 线

mysql - 我可以使用 split linux 命令分割压缩的 sql 文件吗?如果不行的话还有什么方法可以做吗?

bash - 如何使用conf文件中的参数来了解磁盘使用情况?

javascript - 使用 bash 脚本修改 javascript 文件

bash - Docker容器中的Stackdriver Agent

python - 通过python(或其他一些简单的脚本语言)中的键合并json文件

python - 确定循环中的第一次出现

python - Hive 和 Hdinsight 与 Azure 上的 python 连接

python - 如何将并行 Pool.map 应用于嵌套列表