我是 shell 脚本的菜鸟。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:
my_command && (echo 'my_command failed; exit)
但它不起作用。它继续执行脚本中此行之后的指令。我正在使用 Ubuntu 和 bash。
尝试:
my_command || { echo 'my_command failed' ; exit 1; }
四个变化:
&&
||
{ }
( )
;
exit
{
}
由于您只想打印消息并仅在命令失败时退出(以非零值退出),因此您需要 a ||not an &&。
cmd1 && cmd2
cmd2成功时将运行cmd1(退出值0)。然而
cmd2
cmd1
0
cmd1 || cmd2
cmd2失败时将运行cmd1(退出值非零)。
Using( )使它们内部的命令在 子 shell 中运行并从那里调用 aexit会导致您退出子 shell 而不是原始 shell,因此在原始 shell 中继续执行。
为了克服这种使用{ }
bash 需要最后两个更改。