Linux Bash中双安和(&&)和分号(;)有什么区别?

时间:2014-09-04 15:36:09

标签: linux bash

Linux Bash中的&符号和分号有什么区别?

例如,

$ command1 && command2

VS

$ command1; command2

3 个答案:

答案 0 :(得分:108)

&&运算符是一个布尔AND运算符:如果左侧返回非零退出状态,则运算符返回该状态并且不评估右侧(它短路),否则评估右侧并返回其退出状态。这通常用于确保command2仅在command1成功运行时运行。

;令牌只是分隔命令,因此无论第一个命令是否成功,它都将运行第二个命令。

答案 1 :(得分:26)

command1&&命令2

如果(且仅当)command1 && command2执行成功结束,

command2执行command1。在Unix行话中,这意味着退出代码 / 返回代码等于零。

命令1;命令2

command1; command2按顺序执行command2后执行command1。命令是否成功无关紧要。

答案 2 :(得分:5)

前者是一个简单的逻辑AND,使用短路评估,后者只是划分两个命令。

真实情况是,当第一个程序返回非零退出代码时,整个AND将被评估为FALSE,第二个命令将无法执行。后者只是按顺序执行它们。