ls || echo no && echo yes 这条命令为什么会打印yes? 这里老师解释说是前面的ls执行成功了,这解释没有说服力啊!因为前面可以有无数条命令,这些命令可能正确输出,也可能错误输出,这样还怎么判断?
是不是 [命令无论对错] || echo no 返回的值都是真
mark
(ls || echo no)&&echo yes
这样你就看懂了,执行ls,到逻辑后再执行yes
我明白了 因为加了 逻辑或 逻辑或是只会执行其中一条语句的 &&符号把这个a || b 直接看成了一条语句
你这是Tony老师的说法,我觉得Tony老师这么解释没逻辑,所以才问了。这问题我自弄清楚了。并不是因为ls执行成功了,而是因为ls||echo no返回值是真,才会执行后面的echo yes.
这跟前面的无数条命令没有关系,ls指的就是开头的这个ls。
|| 和 && 具有同等的优先级,所以 ls || echo no 会先执行,随后是&&的部分:
那么开头的ls执行成功了,所以就不用执行 || 后面的echo no了,这样 && 前面的部分(ls || echo no)也算作执行成功,所以&&后面的echo yes还要继续执行,这样就打出yes了