变量名不可转大写,只能将变量值转大写:bash 4.0+用${var^^};posix兼容用tr;复杂文本用awk;持续自动转换用declare -u。

变量名本身不能转成大写——Shell 中变量名是标识符,必须以字母或下划线开头,且区分大小写,但命名后不可“转换”;你真正想做的,是把变量的值转成大写。
用 Bash 内置参数扩展(推荐,高效简洁)
适用于 Bash 4.0+(2009 年起已广泛部署),无需调用外部命令:
-
${var^^}:把变量var的全部内容转为大写 -
${var^}:只把首字符转为大写(其余不变)
例如:
name="hello world"
echo "${name^^}" # 输出:HELLO WORLD
echo "${name^}" # 输出:Hello world
用 tr 命令(兼容性最好)
适合需要 POSIX 兼容的脚本(如在 dash、ash 或旧版 shell 中运行):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
echo "$var" | tr '[:lower:]' '[:upper:]'- 也可写成
echo "$var" | tr a-z A-Z,但前者更规范,支持 locale
注意:需用命令替换赋值,例如:UPPER=$(echo "$var" | tr '[:lower:]' '[:upper:]')
用 awk(功能稳定,适合复杂场景)
当处理含多行、字段或需结合其他文本操作时很实用:
echo "$var" | awk '{print toupper($0)}'- 同样需命令替换:
UPPER=$(echo "$var" | awk '{print toupper($0)}')
用 declare 声明自动转换变量(一次设定,持续生效)
适合希望后续所有赋值都自动转大写的场景:
-
declare -u UPPER_VAR→ 此后对UPPER_VAR赋任何值,都会自动转大写 - 例如:
UPPER_VAR="abc123"; echo $UPPER_VAR输出ABC123
注意:declare -u 只影响该变量后续的赋值,不改变已有值;且仅对字母生效,数字和符号保持不变。










