Linux管道符|与运算符&&区别剖析

Linux管道 ‘ | ’ 与运算符‘&&’的区别

  • 这两者均是shell中的概念
  • 简单来说,最根本的区别是:
    • | (管道符):用于连接进程,将一个命令的输出作为另一个命令的输入。
    • &&(逻辑与运算符):用于连接命令,根据前一个命令的成功与否来决定是否执行后一个命令。

“ | ”——管道符

  • 功能:它创建的一个“管道”,将第一个命令(|左边)的标准输出直接作为第二个命令(|右边)的标准输入
  • 数据流:它传递的是数据
  • 执行顺序:管道连接的两个命令是同时启动的。右边的命令会一直等待左边的命令输出数据,并实时处理。
  • 关注点:关注的是数据的流动和加工。即把一个命令的结果传递给另一个命令做进一步处理。
  • 例子
    # 搜索当前目录下的文件,然后使用grep过滤出包含"report"的文件名
    ls -l | grep "report"
    
    grep并不关心ls是否能运行成功,即使目录为空,grep也会处理空输入。

“&&”——逻辑与运算符

  • 功能:它表示“并且”的逻辑关系。只有当前一个命令运行成功时,后面的命令才会被执行。如果前一个命令失败,后面的命令会被跳过。
  • 数据流:它不传递数据,它传递的是命令的“成功”或“失败”的状态
  • 执行顺序:命令是顺序执行的,一个接一个。必须等前一个命令完全结束,才知道下一条命令要不要执行。
  • 关注点:关注的是命令的执行状态和流程控制。只有在前一步成功的前提下才能继续下一步。
  • 例子
    # 编译一个程序,如果编译成功(make返回0),才运行它
    make && ./my_program
    
    ./my_program的执行完全依赖于前一个命令 make是否成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值