一:||和&&连接多个命令的结果分析(包含错误命令时)
(1)
Pwd 成功,返回真----ls dd不执行----------------->/etc
Pwd||ls dd 返回真
Pwd||ls dd&&pwd中的最后一个pwd执行----------------------->/etc
pwd成功,返回真-----ls dd执行----------------->/etc ls:无法访问
( ls dd有提示,对于错误的命令不是执行,而是会有一个错误提示信息,返回值为假)
Pwd&&ls dd返回假
Pwd&&ls dd||pwd中的最后一个pwd执行---------------------->/etc
Pwd 成功,返回真--------ls dd不执行----------->/etc
Pwd||ls dd返回真
最后一个pwd不执行
pwd成功,返回真--------------ls dd执行------------>/etc ls:无法访问
(ls dd非正常执行,返回假)
Pwd&&ls dd返回假
最后一个pwd不执行
(2)
Ls dd 未成功执行(即会提示,但是没有该命令对应的正确执行结果,返回假)-------------pwd执行---------------->ls:无法访问 /etc
Ls dd||pwd返回值为真
最后一个pwd不执行
Ls dd 未成功执行-------------pwd执行---------------->ls:无法访问 /etc
Ls dd||pwd返回值为真
最后一个pwd执行-------------------->/etc
Ls dd 未成功执行-------------pwd不执行---------------->ls:无法访问
Ls dd&&pwd返回假
最后一个pwd执行-------------------->/etc
Ls dd 未成功执行-------------pwd不执行---------------->ls:无法访问
Ls dd&&pwd返回假
最后一个pwd不执行
二:总结
1:(1:)&&左边的命令返回真(成功执行)后,右边的命令才会执行
(2:)||左边的命令返回假(不成功执行)后,右边的命令才会执行
2:不正确的命令情况:(1)不正确的命令在第一个位置,会有提示信息,且返回假
- 若&&(||)前面返回真(假),后面的不正确的命令会有会有提示信息,且返回假,其他情况是不显示提示信息的
(不正确的命令:例:ls ddd,pwd fff,即不属于linux系统的命令)
3:二者嵌套,先分析前面的,再根据逻辑关系判断前面式子返回的真假,再判断后面的会不会执行。
参考网站[shell]shell 中| && || () {} 用法以及shell的逻辑与或非 - aaronGao - 博客园 (cnblogs.com)