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

如何在Bash中同时实现变量替换与全大写转换?

Bash:同时实现变量替换与全大写转换

问题场景

我编写了如下Bash代码:

target='xfce/*'
file_name="All files from ${target/\/*}"

执行后续的输出命令:

echo "Copying [$file_name] folder"

实际输出为:

Copying [All files from xfce] folder

但我需要的输出是:

Copying [All files from XFCE] folder

(要求xfce转为全大写的XFCE)

我知道${var^^}可以把变量转成全大写,但不知道怎么把替换操作和大写转换结合在一起。试了下面两种写法都失败了:

file_name="All files from ${target/\/*^^}"
file_name="All files from ${target^^/\/*}"

想问有没有办法在同一个参数扩展里完成这两个操作?

解决方法

可以用嵌套参数扩展来实现,先做替换,再对替换后的结果转大写,写法如下:

target='xfce/*'
file_name="All files from ${${target/\/*}^^}"

运行后执行echo命令,就能得到你想要的输出。

原理拆解

  • 内层${target/\/*}:先把target里的/*替换为空,得到字符串xfce
  • 外层${...^^}:把内层输出的xfce转换成全大写的XFCE

如果觉得嵌套写法可读性差,也可以拆成两步(逻辑更清晰,效果完全一致):

target='xfce/*'
clean_target=${target/\/*}  # 先清理掉/*部分
file_name="All files from ${clean_target^^}"  # 再转大写

内容的提问来源于stack exchange,提问作者resu-xuniL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:42:04