既不是 Linux 也不是 Unix 的专家我想知道这两种在同一行上串 2 个命令的方法有什么区别?在这个简单的例子中,我看不出输出有什么不同
Pete$date ; time
Sun Mar 17 19:37:20 EDT 2013
real 0m0.000s
user 0m0.000s
sys 0m0.000s
Pete$date &&time
Sun Mar 17 19:37:46 EDT 2013
real 0m0.000s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
这没有造成任何问题 - 我只是好奇..
azi*_*mut 43
&&
是一个逻辑“与”。第一个参数被评估,第二个参数只有在第一个返回 true 时才被评估。原因是“false AND something”总是错误的,所以在这种情况下不需要评估第二个参数。
因此&&
,如果第一个命令报告错误(true
由退出代码0
表示,表示没有错误),请确保不执行第二个命令。相反,;
无论第一个命令的结果如何,都执行这两个命令。
结论:链接命令&&
是一个好习惯。相反,;
如果出现问题,它不会执行后续命令。
pho*_*bos 26
顺序执行命令,不管之前的退出状态是什么:
# sh -c "exit 0" ; echo "2nd command"
2nd command
# sh -c "exit 1" ; echo "2nd command"
2nd command
Run Code Online (Sandbox Code Playgroud)
逻辑与
执行下一条命令,但前提是上一条命令成功(退出状态为0
):
# sh -c "exit 0" && echo "2nd command"
2nd command
# sh -c "exit 1" && echo "2nd command"
#
Run Code Online (Sandbox Code Playgroud)
逻辑或
执行下一个命令,但前提是上一个命令失败(退出状态不是 0
):
# sh -c "exit 0" || echo "2nd command"
#
# sh -c "exit 1" || echo "2nd command"
2nd command
Run Code Online (Sandbox Code Playgroud)