一尘不染

命令失败怎么退出?

linux

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

my_command && (echo 'my_command failed; exit)

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


阅读 281

收藏
2020-06-02

共1个答案

一尘不染

尝试:

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

四个变化:

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

既然你要打印的消息,只有当命令失败(非零值退出)退出你需要一个||不是&&

cmd1 && cmd2

cmd2cmd1成功时运行(退出值0)。在哪里

cmd1 || cmd2

cmd2cmd1失败(退出值非零)时运行。

使用( )可以使其中的命令在 子外壳中 运行,然后exit从那里调用a 会导致您退出子外壳而不是原始外壳,因此在原始外壳中继续执行。

为了克服这种使用 { }

bash需要最后两个更改。

2020-06-02