登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Bash中; && ||命令连接符不是逻辑连接符、多个命令的执 ...
Bash中; && ||命令连接符不是逻辑连接符、多个命令的执行顺序
[ 复制链接 ]
啪炽
2025-6-11 14:01:11
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
Bash中; && ||命令连接符不是逻辑连接符、多个命令的执行顺序
在Shell的Bash语言中,; && ||三个符号用于分隔命令,根据前一个命令的执行状态,按顺序执行后面的命令。它们形似逻辑运算符,但其实不是
逻辑运算符
,而是
命令连接符
。
基础知识
【重要】每个命令执行后都有进程退出状态码,下面简称退出状态码(Exit Status)。为0则表示命令成功执行。非0则表示命令执行失败。
具体是多少,由该命令对退出状态码指定。
echo命令没有特殊情况,退出状态码通常是0(因为几乎总是成功执行)。
;(
分号
)用于分隔多个命令,按顺序执行这些命令,无论前一个命令执行成功与否。如在命令行中敲入echo "Hello"; echo "World",按下回车,会输出Hello,同时换行输出World。
&&(
AND连接符
)分隔多个命令,只有前一个命令
退出状态码为零
(
即执行成功
),就会执行下一条命令。
||(
OR连接符
)分隔多个命令,只有前一个命令
退出状态码非零
(
即执行失败
),才会执行下一条命令。
注意:
&&和||作用的范围是下一条命令,不是整行命令
;如果有一行命令序列中有多条命令,如果下一条命令不能执行,不代表下下条命令不能执行。
如果退出状态码非零(即执行失败),在命令行中会打印错误信息,但并不意味着整行命令停止运行。
没有优先级
在Bash语言中,作为
命令连接符
,
; && ||并没有优先级
。
具体到执行上,
如果没有括号,永远是从左往右执行
。
但是&& ||在退出状态码上,&&与||有逻辑连接符的特征:A&&B时,只有A和B退出状态码都为0,整体的退出状态码才是0。A||B时,如果A和B的退出状态码有一个是0,整体的退出状态码就是0。
学过Java的同学会有认识:(2>5 && 1235时,就可以忽略后面两条直接判定false了;在shell命令中,(A&&B&&C)也一样,只要A出错了,整体的退出状态码就是非0。(也可类比(A||B||C))
命令序列的执行顺序
在判断某一行由许多命令由命令连接符组成的命令序列的执行顺序时,我们需要如下操作:
(请结合例子动笔写下关键的推理过程)
有括号优先处理括号。
然后从左往右看,
每次执行命令后,留意退出状态码与接下类的命令连接符
。
满足以下条件之一的,继续执行下面的命令,返回第2条:
命令连接符是;
命令连接符是&&且退出状态码为0
命令连接符是||且退出状态码为非0
满足以下条件之一的,执行第4条:
命令连接符是&&且退出状态码为非0
命令连接符是||且退出状态码为0
将命令连接符连起来的两条命令外围扩上一层小括号,例如(A ; B)/(A && B)/(A || B),判断小括号内的退出状态码
:
如果最终B不执行,返回A的退出状态码
如果最终B执行了,返回B的退出状态码
说人话:B不执行,只要A失败了,整条命令就失败了;B执行了,管他A怎么鸟样,只要B失败了,整条命令就失败了。其余情况整条命令都是成功的。
然后返回第2条,直到所有的命令都执行完毕。
例如:下面的例子中,很多人会误以为不会输出任何东西,但实际上会输出bb。
true || echo aa && echo bb
复制代码
分析:
true不会执行任何操作,返回退出状态码0。后方命令连接符是||,所以echo aa不会执行。
然后分析(true || echo aa)&& echo bb,因为echo aa不执行,所以返回true这条命令的退出状态码。因为退出状态码为0,所以(true || echo aa)整条命令的退出状态码为0。
然后分析&& echo bb,因为&&且退出状态码为0,所以执行echo bb,打印bb,退出状态码还是0。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
amp
命令
连接
Bash
不是
相关帖子
Linux命令自检
Flask数据库操作三步曲:连接、建模与CRUD实战
DBLens 连接数怎么限制?免费 3 个,订阅随便加
一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样
【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索
Linux常用命令查询工具(好记性不如烂笔头)
数字电路模拟程序&课堂测验Blog
《ESP32-S3使用指南—IDF版 V1.6》第五十五章 基于MQTT协议连接阿里云服务器
pgAdmin 后台命令执行漏洞复现及分析(CVE-2025-2945)
JS逆向-反调试分析&debuger执行&条件断点&替换文件执行
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Linux命令自检
3
383
椎蕊
2025-12-07
安全
Flask数据库操作三步曲:连接、建模与CRUD实战
1
734
判涔
2025-12-09
业界
DBLens 连接数怎么限制?免费 3 个,订阅随便加
3
623
秤陷曲
2025-12-09
业界
一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样
1
200
喙审
2025-12-10
安全
【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索
0
478
杓疠?
2025-12-11
安全
Linux常用命令查询工具(好记性不如烂笔头)
1
602
闾丘婉奕
2025-12-12
安全
数字电路模拟程序&课堂测验Blog
0
222
吕梓美
2025-12-15
安全
《ESP32-S3使用指南—IDF版 V1.6》第五十五章 基于MQTT协议连接阿里云服务器
0
326
呵桢
2025-12-16
安全
pgAdmin 后台命令执行漏洞复现及分析(CVE-2025-2945)
0
237
赘暨逢
2025-12-17
业界
JS逆向-反调试分析&debuger执行&条件断点&替换文件执行
0
720
殳世英
2025-12-18
回复
(5)
骆贵
2025-10-27 00:46:50
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
钱匾
2025-10-27 23:57:43
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
馏栩梓
2025-12-1 20:48:25
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
鼓励转贴优秀软件安全工具和文档!
卿搞笔
2025-12-2 05:51:18
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
颛孙中
前天 13:31
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
酒跚骼
昨天 04:47
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,试用一下
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
啪炽
昨天 04:47
关注
0
粉丝关注
15
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
272
数据库表设计
682
[生存技能] 速冻包子热处理工艺优化研究:
655
Oracle索引技术:理论与实操全解析
196
人工智能如何改变 Anthropic 的工作方式
618
IntelliJ IDEA 免费版正式发布,太香了!
716
Spring AI Alibaba 入门指南
495
延迟队列的实现范式——ZSet与Stream方案对
795
深入理解MyBatis缓存机制:一二级缓存全解
813
别买树莓派了!3步教你在安卓手机上跑通 CP
287
vue 甘特图 vxe-gantt table 依赖线的使用
605
你的代码正在腐烂:为什么我们都不敢碰那座
438
龙城宠医守护者联盟:2025年常州宠物健康卫
468
大语言模型~Ollama本地模型和java一起体验L
940
.Net通过EFCore和仓储模式实现统一数据权限
365
变天了!字节vs阿里大模型正面硬刚,双人视
758
C++学习笔记 23 宏 Macro
549
基于Python实现微信通知和预警
481
Java函数式接口——渐进式学习
784
Django QuerySet filter 完全指南:高效查
520
vue 甘特图 vxe-gantt table 任务条可拖拽