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

zsh自定义创建GitHub仓库函数出现JSON解析错误如何解决

问题原因

核心是Shell的字符串解析规则导致的:单引号包裹的字符串会完全保留字面量内容,不会触发变量展开、转义符解析。你写的-d '{"name":"$1"}'中,$1不会被替换为你传入的仓库名参数,传递到GitHub接口的JSON不符合规范,就会触发解析错误。你之前尝试转义$反而会让$也变成字面量的一部分,无法解决问题。

解决方案

方案1:字符串拼接(最简单,无需额外工具)

修改.zshrc中的函数,把变量部分移到单引号之外,通过多段引号拼接生成合法JSON:

gitcreate() {
  curl -u 'my_gh_username' https://api.github.com/user/repos -d '{"name":"'"$1"'"}'
}

修改完成后执行source ~/.zshrc即可生效。

方案2:双引号包裹+内部转义

也可以用双引号包裹整个JSON参数,转义内部的双引号让变量可以正常展开:

gitcreate() {
  curl -u 'my_gh_username' https://api.github.com/user/repos -d "{\"name\":\"$1\"}"
}

方案3:用jq生成JSON(兼容性最好)

如果你的仓库名可能包含空格、引号、特殊符号,推荐用jq工具生成标准JSON,完全避免结构被破坏:

  1. 先安装jq:macOS执行brew install jq,Debian/Ubuntu执行sudo apt install jq
  2. 修改函数为:
gitcreate() {
  local repo_name="$1"
  curl -u 'my_gh_username' https://api.github.com/user/repos -d "$(jq -n --arg name "$repo_name" '{"name": $name}')"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:15:05