我是shell脚本的noob.如果命令失败,我想打印一条消息并退出脚本.我试过:
my_command && (echo 'my_command failed; exit)
但它不起作用.它会继续执行脚本中这一行之后的指令.我正在使用Ubuntu和bash.
我是shell脚本的noob.如果命令失败,我想打印一条消息并退出脚本.我试过:
my_command && (echo 'my_command failed; exit)
但它不起作用.它会继续执行脚本中这一行之后的指令.我正在使用Ubuntu和bash.
try :
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所必需的.