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

Shell如何裁剪不同前缀的仓库名提取domain字段?

可行实现方案

方案1:Bash原生参数扩展(推荐)

无需调用任何外部命令,性能最优,兼容性好,写法最简单:

# 按优先级依次匹配删除两种前缀,两种场景自动适配
domain="${repo#app-na-}"
domain="${domain#wcm-}"

逻辑说明:

  • ${变量#前缀}是Bash内置的参数扩展语法,作用是从变量内容开头删除最短匹配的前缀
  • 如果仓库名是app-na-开头,第一行就会把前缀删除,第二行没有匹配到wcm-前缀,内容保持不变
  • 如果仓库名是wcm-开头,第一行没有匹配到app-na-前缀,内容保持不变,第二行删除wcm-前缀,得到目标结果

方案2:sed正则替换(兼容POSIX sh环境)

如果需要兼容非Bash的shell环境,可以用sed一步完成匹配替换:

domain=$(echo "$repo" | sed -E 's/^(app-na-|wcm-)//')

逻辑说明:

  • -E 开启扩展正则支持
  • ^(app-na-|wcm-) 匹配字符串开头的两种前缀任意一种
  • 把匹配到的前缀替换为空,直接得到裁剪后的内容

方案3:if分支判断写法(对应你之前尝试的修正版)

如果要走分支判断逻辑,可以用字符串前缀匹配实现:

if [[ $repo == app-na-* ]]; then
  # 下标从0开始计数,前7个字符为app-na-,从第7位开始截取
  domain="${repo:7}"
elif [[ $repo == wcm-* ]]; then
  # 前4个字符为wcm-,从第4位开始截取
  domain="${repo:4}"
fi

内容的提问来源于stack exchange,提问作者Devops-Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:36:03