小编典典

如果命令失败如何退出?

all

我是 shell 脚本的菜鸟。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:

my_command && (echo 'my_command failed; exit)

但它不起作用。它继续执行脚本中此行之后的指令。我正在使用 Ubuntu 和 bash。


阅读 72

收藏
2022-05-05

共1个答案

小编典典

尝试:

my_command || { echo 'my_command failed' ; exit 1; }

四个变化:

  • 更改&&||
  • 使用{ }代替( )
  • 介绍;之后exit
  • {前后空格}

由于您只想打印消息并仅在命令失败时退出(以非零值退出),因此您需要 a ||not an &&

cmd1 && cmd2

cmd2成功时将运行cmd1(退出值0)。然而

cmd1 || cmd2

cmd2失败时将运行cmd1(退出值非零)。

Using( )使它们内部的命令在 子 shell 中运行并从那里调用 aexit会导致您退出子 shell 而不是原始
shell,因此在原始 shell 中继续执行。

为了克服这种使用{ }

bash 需要最后两个更改。

2022-05-05