首页 > 解决方案 > 单引号内的 Bash 别名参数

问题描述

我正在尝试使用终端创建一个别名来创建 GitHub 存储库,执行此操作的命令是curl -u 'username' https://api.github.com/user/repos -d '{"name":"repo_name"}'

我在我的 .zshrc 文件 gitcreate() 中定义了一个函数,它应该使用第一个参数作为其名称来创建一个 GitHub 存储库

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

不幸的是,我不断收到错误 {"message": "Problems parsing JSON", "documentation_url": "https://docs.github.com/rest/reference/repos#create-a-repository-for-the-authenticated -user"} 我已经尝试逃避 $ 和我在网上阅读的其他建议,但没有任何效果,我希望有人对此有一个简单的解决方案/可以将我推荐给我可能能够找到答案的地方。谢谢!

标签: bashzshalias

解决方案


只是

"{\"name\":\"$1\"}"

或者

'{"name":"'"$1"'"}'

但充其量是使用适当的 JSON 工具:

data=$(jq -n --arg arg "$1" '{"name": $arg}')
curl ...  "$data"

推荐阅读