&&和;之间的区别-Linux中的链接运算符

逻辑AND运算符(& & ):
仅当第一个命令成功执行(即其退出状态为零)时, 第二个命令才会执行。该运算符可用于检查第一个命令是否已成功执行。这是命令行中最常用的命令之一。
语法如下:

command1 & & command2

如果command1成功执行, 则command2将执行。此运算符使我们可以检查command1的退出状态。
分号运算符(; ):
【& & 和; 之间的区别-Linux中的链接运算符】它用于一次执行多个命令。使用此运算符可以将多个命令链接在一起。无论此操作符的退出状态如何, 始终在该操作符之后的命令执行之后始终执行该操作符。这些命令始终按顺序执行。由分号运算符分隔的命令是按顺序执行的, shell等待每个命令依次终止。返回状态是最后执行的命令的退出状态。
语法如下:
command1 ; command2

第二条命令的执行与第一条命令的退出状态无关。如果第一个命令未成功执行, 则第二个命令也将执行。
AND(& & )和SEMI-COLON(; )运算符之间的区别:
& & (逻辑AND)运算符
; (分号)运算符
第二条命令的执行取决于第一条命令的执行 第二命令的执行独立于第一命令的执行状态。
如果前一条命令的退出状态为非零, 则将不执行后一条命令。 即使第一个命令的退出状态为非零, 第二个命令也将被执行。
允许条件执行 不允许条件执行。
Bash短路了逻辑AND的评估。 无需短路评估。
逻辑AND具有更高的优先级。 它的优先级低于逻辑与。
范例1:
[ -z $b ] & & b = 10 [ -z $b ] & & b = 15

第一个命令检查变量b是否存在, 如果存在, 则用10初始化。考虑到b不存在, 因此第一个命令的退出状态为0, 因此执行第二个命令, 并用10初始化b。现在, 如果我们再次尝试使用相同的命令对其进行初始化, 则将不会执行该命令, 因为第一个命令的退出状态为1, 因为b已经存在。如果我们使用echo再次显示b, 则将获得先前初始化的值。
[ -z $b ] ; b = 10 [ -z $b ] ; b = 15

即使第一个命令的退出状态为1, 即b已经存在, 第二个命令也将被执行, 并且b将再次用新值初始化。
&&和;之间的区别-Linux中的链接运算符

文章图片
范例2:
[ -f a.txt ] & & echo "file exists"

仅当文件存在于当前目录中时, 才会显示” 文件存在” 。当第一个命令返回0时, 即文件存在, 则仅执行下一个命令, 否则将不显示任何内容。
[ -f a.txt ] ; echo "file exists"

“ 文件存在” 将始终显示。它与第一个命令的退出状态无关。
&&和;之间的区别-Linux中的链接运算符

文章图片
对于& & 运算符, 只有在使用touch命令创建文件时, 才会显示文件存在。但是即使使用rm命令删除文件后, 使用时仍会显示文件存在;算子

    推荐阅读