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

如何用Bash脚本将目录名转为Docker合法镜像名(大写转连字符小写)

解决方案

完整脚本

# 定义目录到镜像名的映射(可扩展更多特殊规则)
declare -A dir_to_image=(
    ["repairService"]="service-desk"
)

# 遍历当前目录下的所有子目录
for d in */; do
    # 去掉目录名末尾的斜杠
    dir_name="${d%/}"
    
    # 确定镜像名称:优先使用映射规则,否则转小写
    if [[ -n "${dir_to_image[$dir_name]}" ]]; then
        image_name="${dir_to_image[$dir_name]}"
    else
        # 将目录名转为全小写
        image_name="${dir_name,,}"
    fi
    
    # 进入目录构建镜像
    (cd "$dir_name" && docker build -t "$image_name" .)
done

关键说明

  • 特殊目录映射:通过declare -A定义关联数组dir_to_image,把需要自定义镜像名的目录和对应名称一一绑定,后续有其他特殊需求直接在数组里追加即可。
  • 大写转小写:用Bash 4.0+支持的参数扩展${dir_name,,},自动将目录名转为全小写,适配Docker镜像名的大小写限制。
  • 仅处理目录:遍历规则改用*/替代原有的*,只匹配子目录;同时通过${d%/}去掉目录名末尾的斜杠,保证后续判断和路径引用的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:51:11