You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix Shell脚本:如何实现传入字符串的交替字符大小写转换

嘿,这有几个能帮你实现字符串大小写互换(小写转大写、大写转小写)的Shell脚本方案,都是实际场景里好用的,你可以根据自己的环境选:

方法1:用tr命令(最简洁通用)

tr是Unix系统里专门做字符转换的工具,实现这个需求一行命令就搞定,脚本写起来超简单:

#!/bin/bash
# 检查是否传入了参数
if [ $# -eq 0 ]; then
    echo "提示:请传入需要转换的字符串作为参数,比如 ./toggle_case.sh \"HeLLo\""
    exit 1
fi

# 执行大小写互换
echo "$1" | tr '[:upper:][:lower:]' '[:lower:][:upper:]'

使用方式

把脚本存为toggle_case.sh,赋予执行权限:

chmod +x toggle_case.sh

然后调用:

./toggle_case.sh "HeLLo WoRLd 123!"

输出结果:hEllO wOrlD 123!

方法2:用awk实现(更灵活,支持非字母字符保留)

如果需要对非字母字符做保留处理,awk的字符判断能力会更顺手,脚本示例:

#!/bin/bash
if [ $# -eq 0 ]; then
    echo "提示:请传入需要转换的字符串作为参数"
    exit 1
fi

echo "$1" | awk '{
    result = ""
    # 遍历每个字符
    for (i=1; i<=length($0); i++) {
        c = substr($0, i, 1)
        if (c ~ /[a-z]/) {
            result = result toupper(c)  # 小写转大写
        } else if (c ~ /[A-Z]/) {
            result = result tolower(c)  # 大写转小写
        } else {
            result = result c  # 非字母字符直接保留
        }
    }
    print result
}'

这个方法的优势是可以精准控制每个字符的处理逻辑,比如遇到数字、符号都不会改动。

方法3:纯Bash内置实现(无需外部工具,效率更高)

如果你的环境只能用纯Bash(不能调用tr/awk这类外部命令),可以用Bash的参数扩展和循环来实现:

#!/bin/bash
if [ $# -eq 0 ]; then
    echo "提示:请传入需要转换的字符串作为参数"
    exit 1
fi

input="$1"
output=""

# 逐个字符处理
for (( i=0; i<${#input}; i++ )); do
    char="${input:i:1}"
    if [[ "$char" =~ [a-z] ]]; then
        output+=${char^^}  # 小写转大写
    elif [[ "$char" =~ [A-Z] ]]; then
        output+=${char,,}  # 大写转小写
    else
        output+="$char"  # 非字母字符保留
    fi
done

echo "$output"

这个方案完全依赖Bash自身特性,不需要启动额外进程,在频繁调用的场景下效率会更高。

小提醒

如果要处理带空格或者特殊字符的字符串,调用脚本时一定要把参数用双引号括起来,避免被Shell拆分哦~

内容的提问来源于stack exchange,提问作者Gudala Sandeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:48:40