2014-11-28 3 views
1

Im пытается создать Баш скрипт, чтобы GitHub тянуть запросы здесь его мой код:Отправка после JSON с ошибкой локон ПОЛУЧИТЬ

Gist Code

Я получаю эту ошибку:

curl: (6) Could not resolve host: on 
curl: (3) [globbing] unmatched close brace/bracket in column 63 
{ 
    "message": "Problems parsing JSON", 
    "documentation_url": "https://developer.github.com/v3" 
} 

Пожалуйста help

ответ

1

Больше/собственно процитировать:

body=$(printf '{"title":"%s","body":"%s","head":"clamour:%s","base":"%s"}' "$TITLE" "$DESCRIPTION" "$TARGET" "$SOURCE") 
curl -H "$auth" -d "$body" "https://api.github.com/repos/clamour/$PROJECT/pulls" 

Все предоставленные пользователем переменные должны быть указаны (если вы точно не знаете, почему вы хотите оставить, то без кавычек). Закрытие имени переменной в ${braces} является не так же, как "$quoting".

Я считаю, что использование printf имеет тенденцию быть более прозрачным, чем смешивание двойных и одинарных кавычек с переменной интерполяцией.

Убирайся привычку использовать имена переменных ALLCAPS: один день вы будете использовать PATH=..., а затем удивляются, почему ваш сценарий разбивается

+0

Мне это очень нравится – tinySandy

1

Вы используете множество переменных. попробуйте сделать это так

BODY="{\"title\":\"$TITLE\",\"body\":\"$DESCRIPTION\",\"head\":\"clamour\":\"$TARGET\",\"base\":\"$SOURCE\"}" 
"https://api.github.com/repos/clamour/$PROJECT/pulls" 

прочитано и это Difference between single and double quotes in Bash

+0

я проверить ваше решение, но получил ту же ошибку, может быть строка вызова команды может привести больше света, вот оно: sh test.sh -t = "jenkins-api-dev-133" -d = "7f1bb90659de081eb6070d7a574ec4b89489b6b8 от 2014-11-28_18-48-36" -t_b = staging -s_b = develop -p = проект – bitgandtter

+0

хост должен быть defenetly в двойных кавычках, потому что вы используете переменную в ссылке. Для части тела вы, вероятно, должны использовать экранирование, я отредактировал часть BODY. Сейчас мне нечего тестировать. – tinySandy