Expressions
April 13, 2025Less than 1 minutearchitecturebashexpr
参数展开
| 表达式 | 含义 | 等价于 |
|---|---|---|
| ${var} | 变量值 | $var 或 $ |
| ${var:-default} | 如果为空则使用默认值 | $var ?? "default" |
| ${var:=default} | 如果为空则赋值默认值 | $var ??= "default" |
| ${var:+alt} | 如果设置了,则替代 | |
| ${var:?err} | 如果为空则报错并退出 | $var ?? throw "msg" |
| ${#var} | 字符串长度 | $var.len |
| ${var:offset} | 从 offset 开始 | $var[2:] |
| ${var:offset:length} | offset 开始,length 长度 | $var[2:2+3] |
| ${var#pattern} | 从开头移除最短匹配 | |
| ${var##pattern} | 从开头移除最长匹配 | |
| ${var%pattern} | 从结尾移除最短匹配 | |
| ${var%%pattern} | 从结尾移除最长匹配 | |
| ${var/pat/rep} | 替换第一个匹配 | "abca".replace('a', '_a') |
| ${var//pat/rep} | 替换所有匹配 | "abca".replace_all('a', '_a') |
| ${var/#pat/rep} | 如果以 pat 开头才替换 | "abca".replace_all(r"^a", "_a") |
| ${var/%pat/rep} | 如果以 pat 结尾才替换 | "abca".replace_all(r"a$", "_a") |
| ${#arr[@]} | 数组元素个数 | $arr.len |
| ${#arr[1]} | 第 i 个元素长度 | $arr[1].len |