shell 参数扩展支持 ${var,,} 全转小写、${var^^} 全转大写,bash 4.0+ 和 zsh 均兼容;可直接在 [[ ]] 中用于忽略大小写的条件判断;旧版 bash 需用 tr 命令替代。

Shell 中可以通过参数扩展(Parameter Expansion)直接转换变量内容的大小写,无需调用外部命令,简洁高效且兼容性好(Bash 4.0+、zsh 等主流 shell 均支持)。
使用参数扩展转为小写
用 ${var,,} 将整个变量值转为小写:
str="Hello WORLD"-
echo "${str,,}"→ 输出 hello world - 注意:双逗号
,,表示“全部小写”,单逗号,只转首字母小写(如${str,}→ hello WORLD)
使用参数扩展转为大写
用 ${var^^} 将整个变量值转为大写:
str="Hello WORLD"-
echo "${str^^}"→ 输出 HELLO WORLD - 单个脱字符
^只转首字母大写(如${str^}→ Hello WORLD)
在条件判断中直接比较(忽略大小写)
无需预先赋值,直接在 [[ ]] 中用大小写转换做统一比较:
input="YES"if [[ "${input,,}" == "yes" ]]; then echo "confirmed"; fi- 这样无论输入是 YES、Yes、yes 或 yEs,都能匹配成功
- 避免使用
[ ](即旧式 test),它不支持参数扩展,需依赖tr或awk
兼容旧版 Bash(低于 4.0)的替代方案
若必须支持老版本 Bash,可用 tr 命令:
- 转小写:
echo "$str" | tr 'A-Z' 'a-z' - 转大写:
echo "$str" | tr 'a-z' 'A-Z' - 注意管道会启动子进程,性能略低;且需确保变量已引号包裹,防止空格或特殊字符出错











