答案 0 :(得分:108)
&&
运算符是一个布尔AND运算符:如果左侧返回非零退出状态,则运算符返回该状态并且不评估右侧(它短路),否则评估右侧并返回其退出状态。这通常用于确保command2
仅在command1
成功运行时运行。
;
令牌只是分隔命令,因此无论第一个命令是否成功,它都将运行第二个命令。
答案 1 :(得分:26)
command1 && command2
执行成功结束, command2
执行command1
。在Unix行话中,这意味着退出代码 / 返回代码等于零。
command1; command2
按顺序执行command2
后执行command1
。命令是否成功无关紧要。
答案 2 :(得分:5)
前者是一个简单的逻辑AND
,使用短路评估,后者只是划分两个命令。
真实情况是,当第一个程序返回非零退出代码时,整个AND
将被评估为FALSE
,第二个命令将无法执行。后者只是按顺序执行它们。