当前位置: 首页 > news >正文

Bash Shell 结构化命令

一、结构化命令基础:if-then 系列语句

结构化命令用于给Shell脚本增加流程逻辑,根据条件选择执行/跳过代码块,核心依托if体系,依靠命令退出状态码0(成功)/非0(失败)判断是否执行then代码块。

1. 基础单分支:if-then

  • 标准换行写法

支持if内部嵌套if语句,实现多层复杂判断。

二、test命令:自定义条件判断(核心测试工具)

原生if仅能判断命令执行结果,test命令可自定义数值、字符串、文件三类条件;条件成立返回0,不成立返回非0。

1. 两种等价语法


![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1405537bf0aa43f992e6dcca0c224f56.png

2. 三大测试类型

(1)数值比较(仅支持整数,不支持浮点数)
比较符作用
-eq相等
-ne不等
-gt大于
-ge大于等于
-lt小于
-le小于等于
注意:浮点数值(如5.55)使用会直接报错。
(2)字符串比较
  • 相等判断:=!=,区分大小写、标点;
  • 大小比较:><,使用时必须转义\>\<,排序逻辑与sort相反;
  • 空值检测:-z字符串长度为0(空)、-n字符串非空。
(3)文件/目录状态测试

用于检测Linux文件系统对象属性,常用参数:

  • -e file:文件/目录是否存在
  • -d file:存在且为目录
  • -f file:存在且为普通文件
  • -r/-w/-x:可读、可写、可执行
  • -nt/-ot:文件新旧对比

三、复合条件逻辑(布尔与/或)

多条件组合判断,两种运算符:

  1. 逻辑与 &&[条件1] && [条件2],两个条件同时成立才为真;
  2. 逻辑或 ||[条件1] || [条件2],任意一个条件成立即为真;
    示例:同时判断目录存在、目录内文件可写。

四、高级扩展:双括号(( ))、双方括号[[ ]]

1. 双括号(( 数学表达式 ))

专门处理高级数学运算,弥补test仅支持简单整数比较的短板:

  • 支持幂运算**、自增自减++/--、位移、位运算、逻辑&&/||
  • 大于/小于号无需转义,可直接写> <
  • 可直接在括号内完成变量赋值。

2. 双方括号[[ 字符串表达式 ]]

bash专属字符串增强判断,兼容test全部字符串语法,新增模式匹配功能:

  • 支持通配符、正则匹配;
  • 变量容错性更强,空变量不易报错;
  • 适合用户名、文本模糊匹配场景。

五、核心注意事项

  1. 单方括号[ ]前后、内部条件两侧必须加空格,语法硬性要求;
  2. test数值比较仅限整数,浮点运算需使用双括号;
  3. 普通[ ]中字符串大小比较><必须转义,[[ ]](( ))无需转义;
  4. [ ]是POSIX标准,全shell兼容;[[ ]](( ))仅bash可用。

六、课程小结

  1. 基础流程控制:if-then(单分支)、if-then-else(双分支)、if-elif(多分支),支持if嵌套;
  2. 条件测试核心:test命令与简写[ ],覆盖数值、字符串、文件三类判断;
  3. 多条件组合:&&(与)、||(或)复合逻辑;
  4. 高级增强:(( ))高级数学运算、[[ ]]字符串模式匹配。

  1. 提交作业时附上CSDN文章链接。
http://www.jsqmd.com/news/1170289/

相关文章:

  • 虚拟手柄革命:如何用vJoy将键盘鼠标变身专业游戏控制器
  • 【回眸】搞钱灵感——网红餐厅代排平台核心应用场景与落地方案
  • AI舞蹈生成技术解析:从扩散模型到Luma平台实战应用
  • windterm2.5.0中打开vim显示 ESC问题
  • 2026年7月最新南京浪琴官方售后服务网点地址及客服电话一览 - 浪琴官方售后服务中心
  • 膜结构球场适合举办哪些活动?
  • ChatGPT响应太慢怎么办?立即执行这9项检查清单(含curl诊断脚本+Prometheus监控模板,附赠GitHub仓库)
  • STM32F745ZG与DTH-08模块的GPIO信号优化实践
  • AM2910 微程序定序器深度解析:在 TEC-2 中实现 3 种微程序流控制
  • 绝缘螺杆制造工艺革新,浙江亚格电子品质靠谱,厂家推荐排名领先 - 品牌速递
  • 工业负载控制方案:TPD2017FN与PIC18F96J94应用解析
  • Unity多版本共存:高效管理开发环境,提升项目稳定性与效率
  • Linux 与 HDFS 操作效率对比:10 个常见场景下的 Shell 命令与 Web UI 操作指南
  • Function Calling 超时策略:别让一个慢工具拖垮整个 Agent 响应
  • PS去水印不模糊原图方法是什么?去除豆包水印实操教学
  • 2026年武汉汽车改装推荐指南 | 15年豪华车改装头部品牌,新能源升级性价比之王 - 前沿观察站
  • AssetStudio深度解析:Unity资源提取原理与实战指南
  • setState组件更新
  • 欧米茄发条教学与维修保养指南权威公示(2026年7月最新) - 欧米茄服务中心
  • MCP3551与PIC18F25K50高精度数据采集方案详解
  • App 内嵌 H5 秒开技术方案
  • 研究生 AI 率卡 15% 红线怎么降到达标?
  • Mininet 2.3.1 无控制器环境搭建:3步配置静态流表实现主机互通
  • Deepseek-R1-7B安卓端侧部署实战:从量化到HTTP服务
  • PB9 老HIS系统续命记:从10M崩溃到187个PBL的编译生存指南
  • Python 定时任务可靠性:Celery Beat + 数据库锁避免重复执行
  • 2026年7月最新青岛欧米茄官方售后客服电话及服务网点地址查询 - 欧米茄官方服务中心
  • Cursor Tab补全响应延迟>300ms?用这3行配置+2个插件重写补全管道,实测首字符触发提速2.8倍
  • meta-openeuler项目深度解析:9000+软件包YAML配置的终极管理方案
  • AI自我改进系统构建:从Harness Engineering到工程实践