Linux Bash中的双和号(&&)和分号(;)有什么区别?
Linux Bash中的和号和分号有什么区别?
例如,
$ command1 && command2
VS
$ command1; command2
&&
运算符是一个布尔AND运算符:如果左侧返回非零退出状态,则运算符返回该状态并且不计算右侧(短路),否则评估右侧并返回其退出状态。 这通常用于确保command2
只在command1
成功运行的情况下运行。
The ;
令牌只是分离命令,所以它将运行第二个命令,而不pipe第一个命令是否成功。
command1 && command2
command1 && command2
执行command2
if(且仅当) command1
执行成功结束。 在Unix术语中,这意味着退出代码 / 返回代码等于零。
命令1; 命令2
command1; command2
command1; command2
执行command1
后,执行command1
。 命令是否成功并不重要。
前者是一种简单的使用短路评估的逻辑,后者只是简单地划分了两个命令。
实际情况是,当第一个程序返回一个非零的退出代码时,整个AND
被评估为FALSE
,而第二个命令不会被执行。 后者只是按顺序执行它们。