我有以下脚本,我试图用bash测试,使用curl做一些事情,一个是创建一个新的repo,第二个 - 还没有实现 - 是从git_url获取git_url返回的json,我不确定我的parse_json
函数是否允许我这样做,然后最终将示例提交消息推送到该repo。
脚本如下:
#!/usr/bin/env bash
set -eux
# Json Function: parse_json 'json string' key
function parse_json()
{
echo $1 | sed -e 's/[{}]/''/g' | awk -F=':' -v RS=',' "\$1~/\"$2\"/ {print}" | sed -e "s/\"$2\"://" | tr -d "\n\t" | sed -e 's/\\"/"/g' | sed -e 's/\\\\/\\/g' | sed -e 's/^[ \t]*//g' | sed -e 's/^"//' -e 's/"$//'
}
git_create_repo() {
read -e -p "Please enter your API Key: " apiKey
read -e -p "Repo Name: " repoName
read -e -p "Repo Description: " repoDescription
# Use the API to create a a repository
response=$(curl -i -H 'Authorization: token $apiKey' \
-d '{ \
"name": "$repoName", \
"description": "$repoDescription", \
"private": false, \
"license_template": "mit" \
}' \
https://api.github.com/AdamKyle/repos)
echo $response
}
git_create_repo
当我完成所有步骤时:
{
"message": "Bad credentials",
"documentation_url": "https://developer.github.com/v3"
}
我想知道它是否因为我用我的api键输入的方式:curl -i -H 'Authorization: token $apiKey ...'
我已经尝试了"$apiKey"
但是即使这样也没有用。
想法?
答案 0 :(得分:2)
我这样使用它:
curl -X 'POST' -u $MY_AUTH https://api.github.com/...
其中$ MY_AUTH是在github网站上生成的。它看起来像:
export MY_AUTH="...hash...:x-oauth-basic"
答案 1 :(得分:0)
我也面临着类似的问题。
奇怪的是,在标题中使用双引号而不是单引号为我解决了这个问题。如下所示:
curl -i -H "Authorization: token $apiKey" ....