Linux Bash中的&符号和分号有什么区别?
例如,
$ command1 && command2
Run Code Online (Sandbox Code Playgroud)
VS
$ command1; command2
Run Code Online (Sandbox Code Playgroud)
cdh*_*wie 122
该&&
运营商是一个布尔AND运算符:如果左侧返回一个非零退出状态,操作者返回的状态和不评估右侧(它出现短路),否则计算右侧并返回其退出状态.这通常用于确保command2
仅command1
在成功运行时运行.
所述;
令牌只是分开的命令,所以它会运行第二个命令不管第一个是否成功.
jim*_*-cl 30
command1 && command2
执行command2
当(且仅当)command1
执行成功结束.在Unix行话中,这意味着退出代码/返回代码等于零.
command1; command2
在执行command2
之后command1
,顺序执行.命令是否成功无关紧要.
前者是AND
使用短路评估的简单逻辑,后者只是界定两个命令。
实际发生的情况是,当第一个程序返回一个非零退出代码时,将对整个AND
程序求值,FALSE
并且第二个命令将不会执行。后者只是简单地按顺序执行它们。