整理说明:本文是 2026 年 10 月 1 日一次真实 CI 经历的整理,不是今天新跑的测试。所写时间、失败与修复顺序均来自当时的 CI 记录。
经过
Lite 仓的 test-install 工作流,三系统安装脚本测试:
- 18:45,第一轮失败。
- 18:50,修掉两处失败后,第二轮仍然失败。
- 18:54,改掉一类写法后全绿:install.ps1 在 windows-latest 通过,install.sh 在 windows、macos、ubuntu 全部通过。
最后一次修复的提交信息写得很直白:install.sh 里全角字符前的变量一律加花括号。
规则
bash 里写 $var中文 这种形式时,变量名在哪里结束,靠 shell 猜。macOS 自带 bash 3.2 下有个老问题:$var 后面紧跟中文或全角字符时,多字节字符会被吞进变量名,set -u 下直接报 unbound variable。
所以规则只有一条:凡是变量后面紧跟非 ASCII 字符,一律写成 ${var} 花括号形式。不是“建议”,是这一类报错的固定写法。
自查可以用这一行扫一遍脚本,找出所有变量后紧跟非 ASCII 的地方:
grep -nP '\$[a-zA-Z_][a-zA-Z0-9_]*(?=[^\x00-\x7F])' script.sh 别跟另一类问题混淆
第 23 篇写的是 SKILL.md 里 description 含冒号导致 YAML 解析失败,那是 frontmatter 的问题。本文是 shell 变量边界问题,机制不同、修法也不同。两个都踩过,才值得各写一篇。
不用场景
脚本里没有中文文案、变量后面不拼接中文或全角字符时,这条规则用不上,不用为了它改写正常脚本。PowerShell 一侧另有坑(比如 $env:HOME 的修改不会改变自动变量 $HOME),那是另一套,与本文的 bash 规则不通用。
价格口径
中文 AI 编程 CLI 工作流包完整版:早鸟 ¥9.90(限前 100 份),正式 ¥19.90。Lite 版免费版已含 /test、/review、/commit 3 条命令与安装脚本,完整版为 10 条全量,不把 Lite 已含命令写成完整版独占。


