--- title: Shell 编程 2 — 字符串操作、运算符、正则、if/case tags: [来源, linux, shell, bash, 脚本编程, 正则表达式, ops] created: 2026-07-21 updated: 2026-07-21 sources: [raw/day21 Shell编程2.md] aliases: [Day21, Shell 编程二, 字符串截断, 运算符, 条件判断]

Shell 编程 2 — 字符串操作、运算符、正则、if/case

概述

Day21 深入 Shell 字符串处理(切片、截断、替换、变量替代)、运算符体系(算术/文件/字符串/数值/关系/赋值)、正则表达式与元字符、if 条件判断和 case 多分支结构。

核心内容

字符串操作

  • ${#var} 长度,${var:offset:len} 切片
  • 截断:#(去前缀短匹配)、##(去前缀长匹配)、%/%%(后缀)
  • 替换:/old/new(第一个)、//old/new(全部)
  • 变量替代::-(默认值)、:=(赋值默认)、:?(空值报错)

运算符

  • 算术:$((...)),浮点用 bc
  • 文件测试:-f、-d、-r、-w、-x、-s
  • 字符串测试:=、!=、-z、-n
  • 数值测试:-eq、-ne、-gt、-lt、-ge、-le
  • 关系:&&、||、!(推荐 [[ ]] 中使用)

正则与流程控制

  • BRE vs ERE 差异:?、+、|、()、{} 在 ERE 中无需转义
  • if:单/双/多分支
  • case:多模式匹配,支持 | 和通配符

关联