如何停止第一个命令失败影响第二个命令

1 command-line bash alias

例如,我为终端创建了许多别名,以便使用一个命令我可以执行许多命令,所以我可能有一个命令来更新rkhunter它也可以执行freshclam,基本上是这样的:

sudo rkhunter --update && sudo rkhunter --versioncheck && sudo freshclam
Run Code Online (Sandbox Code Playgroud)

我什至可能想要自动执行此任务,以便它每隔一小时左右运行一次,但是存在一个问题,因为如果这些命令中的任何一个失败,那么后面的命令(如果有)将不会执行. 由于这也可能是一项自动化任务,我什至不知道在某处某处出现故障,这意味着超出该点的所有内容甚至都不会运行。

由于这对我来说是目前的一个主要问题,特别是如果我想通过别名等自动执行任务而不创建脚本等,是否有任何方法可以使其中一个命令失败后的下一个命令在&&仍然运行?

此外,另一件事是这不会一直发生,实际上有时它会失败并仍然运行下一个命令,但大多数时候它不会,所以实际上甚至有任何方法可以预测它是否会失败与否,我什至不太确定它为什么会失败。

那么有没有办法解决这个问题,为什么它还是失败了?

A.B*_*.B. 6

使用:

sudo rkhunter --update; sudo rkhunter --versioncheck; sudo freshclam
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要逻辑运算

sudo rkhunter --update || sudo freshclam
sudo rkhunter --update && sudo rkhunter --versioncheck; sudo freshclam
Run Code Online (Sandbox Code Playgroud)

做一些简单的测试 echo


解释

;命令之间是不超过两个或多个命令之间的隔板,而不考虑错误。

它与脚本中的命令列表相同

command1
command2
command3
Run Code Online (Sandbox Code Playgroud)

OTOH&&逻辑合取)和||逻辑析取)是逻辑运算

  • &&   如果一个条件失败,检查第二个或第三个条件是没有意义的。结果是一样的:已经失败了。

     A  B   A ? B
     ------------
     T  T   T
     T  F   F
     F  T   F
     F  F   F
    
    Run Code Online (Sandbox Code Playgroud)
  • ||   当且仅当一个条件失败时,检查第二个和第三个条件才有意义。如果第一个命令成功,第二个将不会被执行,因为结果已经被认为是成功的。

     A  B   A ? B
     ------------
     T  T   T
     T  F   T
     F  T   T
     F  F   F
    
    Run Code Online (Sandbox Code Playgroud)