个性化阅读
专注于IT技术分析

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

逻辑AND运算符(&&):

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

语法如下:

command1 && command2

如果command1成功执行, 则command2将执行。此运算符使我们可以检查command1的退出状态。

分号运算符(;):

它用于一次执行多个命令。使用此运算符可以将多个命令链接在一起。无论此操作符的退出状态如何, 始终在该操作符之后的命令执行之后始终执行该操作符。这些命令始终按顺序执行。由分号运算符分隔的命令是按顺序执行的, 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将再次用新值初始化。

;和&&运算符

范例2:

[ -f a.txt ] && echo "file exists"

仅当文件存在于当前目录中时, 才会显示”文件存在”。当第一个命令返回0时, 即文件存在, 则仅执行下一个命令, 否则将不显示任何内容。

[ -f a.txt ] ; echo "file exists"

“文件存在”将始终显示。它与第一个命令的退出状态无关。

;和&&运算符

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


赞(0)
未经允许不得转载:srcmini » &&和;之间的区别-Linux中的链接运算符

评论 抢沙发

评论前必须登录!