当使用 && 运行命令时,如果一个命令失败,如何让它继续运行?

当使用 && 运行命令时,如果一个命令失败,如何让它继续运行?

例如,我有.gitconfig一个项目,因为我做了很多代码审查,内容如下:

review = "!f(){ git checkout master && git pull origin master && git branch -D $1 && git fetch && git checkout $1 && git pull origin $1 && bundle install && rake db:migrate && git checkout -f; };f"

现在我知道这有点过头了,我不需要这一切,但我喜欢这样。这让我觉得审查分支完全干净了。有时看到这条消息会很高兴Already up-to-date.

现在,当分支尚不存在时,git branch -D $1将会失败并引发错误并且不会运行其余命令。

有没有办法,即使其中一个命令失败,也可以让其余命令运行?

答案1

这就是确保前一个命令成功后再运行下一个命令的全部意义所在&&。如果你不需要这个,可以使用;。以下内容将回显foo

false; echo foo

以下情况则不会:

false && echo foo

请参阅 Bash 手册,部分命令列表

用“ ”分隔的命令;按顺序执行;shell 等待每个命令依次终止。返回状态是最后执行的命令的退出状态。

AND 和 OR 列表是分别由控制运算符“ &&”和“ ||”分隔的一个或多个管道序列。AND 和 OR 列表以左结合性执行。

AND 列表的形式为

command1 && command2

command2command1当且仅当返回退出状态为零时才执行。

OR 列表的形式为

command1 || command2

command2command1当且仅当返回非零退出状态时才执行。

答案2

是的,只需替换&&;

;无论之前的命令的退出状态如何,之后的命令都会运行;

答案3

不要使用,&&因为这意味着只有前一个命令成功完成后才完成此命令。

而是使用它;,它相当于一个新行,并且不依赖于前一个命令的退出状态。

相关内容