
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
sh Docker镜像是基于https://github.com/mvdan/sh%E9%A1%B9%E7%9B%AE%E7%9A%84%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%EF%BC%8C%E4%B8%BB%E8%A6%81%E5%8C%85%E5%90%AB%60shfmt%60%E5%B7%A5%E5%85%B7%E3%80%82%60shfmt%60%E6%98%AF%E4%B8%80%E6%AC%BE%E5%8A%9F%E8%83%BD%E5%BC%BA%E5%A4%A7%E7%9A%84shell%E7%A8%8B%E5%BA%8F%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%99%A8%EF%BC%8C%E6%94%AF%E6%8C%81POSIX Shell、Bash和mksh等多种shell语法。该镜像旨在提供便捷的容器化部署方式,帮助用户在各类环境中快速实现shell脚本的格式化、语法检查和风格统一,适用于开发、CI/CD及团队协作场景。
-alpine两种镜像变体,基于Alpine Linux的变体体积更小,资源占用低。如需构建自定义镜像,执行以下命令:
bashdocker build -t my-shfmt:tag -f cmd/shfmt/Dockerfile .
基本运行命令
bashdocker run --rm -u "$(id -u):$(id -g)" -v "$PWD:/mnt" -w /mnt docker.xuanyuan.run/my-shfmt:tag <shfmt参数>
参数说明:
--rm:容器退出后自动删除,避免残留容器实例。-u "$(id -u):$(id -g)":指定当前用户ID和组ID,防止生成的文件权限异常。-v "$PWD:/mnt":将当前工作目录挂载到容器内/mnt目录,使容器可访问本地脚本文件。-w /mnt:设置容器工作目录为/mnt,即挂载的本地目录。<shfmt参数>:shfmt工具的格式化参数(详见下文示例)。常用示例
查看需要格式化的文件列表:
bashdocker run --rm -u "$(id -u):$(id -g)" -v "$PWD:/mnt" -w /mnt docker.xuanyuan.run/my-shfmt:tag -l *.sh
格式化并覆盖文件:
bashdocker run --rm -u "$(id -u):$(id -g)" -v "$PWD:/mnt" -w /mnt docker.xuanyuan.run/my-shfmt:tag -w script.sh
指定缩进为4个空格:
bashdocker run --rm -u "$(id -u):$(id -g)" -v "$PWD:/mnt" -w /mnt docker.xuanyuan.run/my-shfmt:tag -i 4 -w script.sh
latest:最新开发版本。v3:最新稳定版本(主版本3系列)。v3.x.y(如v3.5.1):特定版本标签。-alpine后缀:基于Alpine Linux的轻量级变体(如v3-alpine)。Bash关联数组索引:必须使用引号包裹索引,否则解析器会将其视为算术表达式导致错误。
sh# 错误示例 ${array[spaced string]} # 解析错误:不是有效的算术运算符 ${array[weird!key]} # 解析错误:未匹配的!符号 # 正确示例 ${array["spaced string"]} ${array["weird!key"]}
$((和((歧义:不支持$((和((的歧义解析,POSIX规范建议通过空格区分$( (。
sh# 错误示例 $((foo); (bar)) # 解析错误:未匹配的)符号 # 正确示例 $( (foo); (bar) )
关键字解析:export、let、declare被解析为关键字,支持静态语法树构建,但不支持declare {a,b}=c类扩展语法。
Docker镜像仅包含shfmt工具,如需使用项目其他组件(如gosh解释器),需通过其他方式安装。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务