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

如何在Bash中不使用sed实现跨平台的PascalCase转kebab-case

方案1:最小改动跨平台sed兼容方案

macOS自带的BSD sed扩展正则参数为-E,而Linux、WSL默认使用的GNU sed同时兼容-r和-E参数,只需将原命令中的-r替换为-E即可全平台原生运行,无需安装额外依赖:

foo="TestPascalCaseString"
echo "$foo" | sed -E 's/([a-z0-9])([A-Z])/\1-\2/g' | tr '[:upper:]' '[:lower:]'

运行输出一致为:test-pascal-case-string

方案2:纯Bash实现(无外部依赖,性能更高)

如果不想调用sed、tr等外部命令,可以用纯Bash逻辑实现,兼容所有主流平台默认Bash版本:

pascal_to_kebab() {
  local input="$1" output="" first=1
  for ((i=0; i<${#input}; i++)); do
    c="${input:i:1}"
    if [[ $c =~ [A-Z] ]]; then
      ((first)) || output+="-"
      output+="${c,,}"
    else
      output+="$c"
    fi
    first=0
  done
  echo "$output"
}

# 调用示例
foo="TestPascalCaseString"
pascal_to_kebab "$foo"

如果需要兼容旧版macOS默认自带的Bash 3版本,把${c,,}替换为$(tr '[:upper:]' '[:lower:]' <<< "$c")即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:57:05