我是 shell 脚本的菜鸟。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:
my_command && (echo 'my_command failed; exit)
但它不起作用。它继续执行脚本中此行之后的指令。我正在使用 Ubuntu 和 bash。
最佳答案
试试:
my_command || { echo 'my_command failed' ; exit 1; }
四个变化:
- 将
&&
更改为||
- 使用
{ }
代替( )
- 在
exit
和 之后引入 {
之后和}
之前的空格
;
由于您只想在命令失败时打印消息并退出(以非零值退出),因此您需要 ||
而不是 &&
。
cmd1 && cmd2
将在 cmd1
成功时运行 cmd2
(退出值 0
)。在哪里
cmd1 || cmd2
将在 cmd1
失败时运行 cmd2
(退出值非零)。
使用 ( )
使它们内部的命令在 sub-shell 中运行,并从中调用 exit
那里会导致您退出子 shell 而不是原来的 shell,因此在原来的 shell 中继续执行。
要克服这个问题,请使用 { }
最后两项更改是 bash 要求的。
关于linux - 如果命令失败如何退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822621/