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

来源:9-6 管道符

Myein

2015-11-13 11:54

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

写回答 关注

6回答

  • 慕娘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  直接看成了一条语句  

    dire

    然后综合 楼上说的 这个语句返回的值是真 所以会执行&&后面的语句

    2015-12-01 01:57:26

    共 1 条回复 >

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

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

    onemoo

    我也是这么说的啊 “这样 && 前面的部分(ls || echo no)也算作执行成功”

    2015-11-14 23:36:46

    共 1 条回复 >

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

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

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

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

Linux达人养成计划 I

Linux入门视频教程,以通俗易懂的语言带你感受linux之美

399416 学习 · 3791 问题

查看课程

相似问题