参数拓展 赋值 ${var:-word} → 如果 var 未设置或为空,使用 word ${var:=word} → 如果 var 未设置或为空,则赋值为 word ${var:+word} → 如果 var 已设置且非空,替换成 word ${var:?message} → 如果 var 未设置或为空,打印错误并退出脚本 替换 ${var/pattern/replacement} → 替换第一个匹配 ${var//pattern/replacement} → 替换所有匹配 ${var/#pattern/replacement} → 前缀匹配替换 ${var/%pattern/replacement} → 后缀匹配替换 删除 # var="foo-bar-foo" # 最短 vs 最长,# 删前缀,% 删后缀 ${var#pattern} → 从头删最短匹配 ${var#*-} → bar-foo ${var##pattern} → 从头删最长匹配 ${var##*-} → foo ${var%pattern} → 从尾删最短匹配 ${var%-*} → foo-bar ${var%%pattern} → 从尾删最长匹配 ${var%%-*} → foo