ll && echo yes || echo no && echo bbb 为啥echo bbb被执行了?
[root@localhost ~]# ll && echo yes || echo no && echo bbb
总用量 72
-rw-------. 1 root root 10387 3月 15 13:54 aa.txt
-rw-r--r--. 1 root root 1840 3月 7 23:11 aa.zip
-rw-------. 1 root root 1246 2月 5 07:37 ana.cfg
-rw-------. 1 root root 1246 1月 30 08:08 anaconda-ks.cfg
-rwxr--r--. 1 root root 152 3月 15 13:34 hello.sh
-rw-r--r--. 1 root root 24772 1月 30 08:08 install.log
-rw-r--r--. 1 root root 7690 1月 30 08:07 install.log.syslog
drwxr-xr-x. 6 root root 4096 3月 15 12:18 test
yes
bbb
按理说,echo no 没有被执行,所以echo bbb也不该被执行。
简单的说,就是 ll && echo yes 的结果会和 ( || echo no)得到结果,此结果再和 (&& echo bbb) 得出结果。
我测试过,好像是这样,连接符号(&&或||)右边的命令是否运行,取决于连接符号左边的各命令运行情况的逻辑预算值,命令运行了逻辑值为1,没有运行逻辑值为0。
例如:
ll && echo yes || echo no && echo bbb
ll 运行了,逻辑值为1,
&& echo yes 左边=1 因此运行,逻辑值为1
|| echo no 左边=1&&1=1,因此不运行,逻辑值为0
&& echo bbb 左边=1&&1||0=1 因此运行
llaa && echo yes || echo no && echo bbb
-bash: llaa: command not found
no
bbb
1.llaa 运行,逻辑值为0,
2.&& echo yes 左边=0 不运行,逻辑值为0
3.|| echo no 左边=0&&0=0,因此运行,逻辑值为1
4.&& echo bbb 左边=0&&0||1=1 因此运行
命令批量执行,虽然前一个命令没有执行,但yes执行了,bbb同样会认为前一个命令正确执行。
这种用法不合理