给出的 zsh 引号建议可能无法防止 `!` 被历史展开
原文依据:2 处文档声称单引号会让 zsh 改写 `!`,并把未转义的 `!` 放进双引号作为“正确”示例。对于启用了历史展开的交互式 zsh,实际通常相反:单引号会抑制展开,而双引号内的 `!` 仍可能被展开。
命令可能失败,或范围参数被意外替换;若替换后仍是有效参数,可能读取与用户预期不同的表格范围。
该 Skill 明确声称单引号会导致 zsh 改写 `!`,并将含有未转义 `!` 的双引号命令标为“正确”。在启用感叹号历史展开的 shell 环境中,这项建议可能导致参数被替换或命令失败,从而读取错误的表格范围。用户可要求作者提供经过相应 zsh 选项验证的引用方式。
- **zsh `!` expansion:** Sheet ranges like `Sheet1!A1` contain `!` which zsh interprets as history expansion. Use double quotes with escaped inner quotes instead of single quotes: ```bash # WRONG (zsh will mangle the !) gws sheets +read --spreadsheet ID --range 'Sheet1!A1:D10' # CORRECT gws sheets +read --spreadsheet ID --range "Sheet1!A1:D10" ```查看另外 1 个位置
```bash # WRONG (zsh will mangle the !) gws sheets +read --spreadsheet ID --range 'Sheet1!A1:D10' # CORRECT gws sheets +read --spreadsheet ID --range "Sheet1!A1:D10" ```