问答详情
源自:9-6 管道符

ls || echo no && echo yes 为什么会打印yes?

ls || echo no && echo yes 这条命令为什么会打印yes? 这里老师解释说是前面的ls执行成功了,这解释没有说服力啊!因为前面可以有无数条命令,这些命令可能正确输出,也可能错误输出,这样还怎么判断?

提问者:Myein 2015-11-13 11:54

个回答

  • 慕娘1283093
    2019-11-19 17:50:09

    是不是   [命令无论对错] || echo no  返回的值都是真

  • newmocker
    2019-09-02 18:19:33

    mark

  • 祢是我吸入肺里的煙
    2015-12-17 20:53:30

    (ls || echo no)&&echo yes

    这样你就看懂了,执行ls,到逻辑后再执行yes

  • dire
    2015-12-01 01:56:06

    我明白了 因为加了 逻辑或 逻辑或是只会执行其中一条语句的  &&符号把这个a || b  直接看成了一条语句  

  • Myein
    2015-11-14 00:41:08

    你这是Tony老师的说法,我觉得Tony老师这么解释没逻辑,所以才问了。这问题我自弄清楚了。并不是因为ls执行成功了,而是因为ls||echo no返回值是真,才会执行后面的echo yes.

  • onemoo
    2015-11-14 00:08:55

    这跟前面的无数条命令没有关系,ls指的就是开头的这个ls。

    ||&& 具有同等的优先级,所以 ls || echo no 会先执行,随后是&&的部分:

    那么开头的ls执行成功了,所以就不用执行 || 后面的echo no了,这样 && 前面的部分(ls || echo no)也算作执行成功,所以&&后面的echo yes还要继续执行,这样就打出yes了