我是 shell 脚本的菜鸟。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:
my_command && (echo 'my_command failed; exit)
但它不起作用。它继续执行脚本中此行之后的指令。我正在使用 Ubuntu 和 bash。
原文由 user459246 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是 shell 脚本的菜鸟。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:
my_command && (echo 'my_command failed; exit)
但它不起作用。它继续执行脚本中此行之后的指令。我正在使用 Ubuntu 和 bash。
原文由 user459246 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
2 回答3.2k 阅读
尝试:
四个变化:
&&
更改为||
{ }
代替( )
;
exit
和{
和}
--- 之前的空格由于您只想在命令失败时打印消息并退出(以非零值退出),因此您需要
||
而不是&&
。将运行
cmd2
当cmd1
成功(退出值0
)。然而将运行
cmd2
当cmd1
失败(退出值非零)。使用
( )
使它们内部的命令在 子 shell 中运行并从那里调用exit
会导致您退出子 shell 而不是原来的 shell,因此在您的原壳。为了克服这种使用
{ }
bash 需要最后两个更改。