在Linux Bash中&和分号之间的区别是什么?
例如,
$ command1 && command2
vs
$ command1; command2
&&操作符是一个布尔AND操作符:如果左边返回一个非零的退出状态,该操作符返回该状态而不计算右边(它短路),否则它计算右边并返回其退出状态。这通常用于确保只有在command1成功运行时才运行command2。
&&
command1
command2
;令牌只是分隔命令,所以不管第一个命令是否成功,它都会运行第二个命令。
;
当(且仅当)command1执行成功时,command1 && command2执行command2。在Unix行话中,这意味着退出代码 / 返回代码等于零。
command1 && command2
command1; command2在执行command1之后依次执行command2。命令是否成功并不重要。
command1; command2
前者是一个简单的逻辑AND使用短路求值,后者只是分隔两个命令。
AND
实际情况是,当第一个程序返回非零退出码时,整个AND将被求值为FALSE,而第二个命令将不会执行。后者只是按顺序执行它们。
FALSE