Проблемы с расширением выражения в объекте JSON - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь использовать GitHub API для создания проблемы, но

curl -u $username  -d '{"title" : "Big Files List" , "body" : "'$(find -type f -size +1M)'", "label" : "big files" } $URL -k'

я получил ответ типа

curl: (3) [globbing] unmatched close brace/bracket at pos 56
{
"message": "Invalid request.\n\nFor 'links/0/schema', \"body\" is not an 
object.",
"documentation_url": 
"https://developer.github.com/enterprise/2.15/v3/issues/#create-an-issue"
}

Так что проблема в $(find -type f -size +1M),когда я заменяю на строку, нет проблемы.

1 Ответ

0 голосов
/ 25 декабря 2018

curl возвращает несколько имен файлов, а пробел после первого имени файла заканчивает аргумент -d, поэтому вы отправляете неполный JSON.Вы должны заключить его в кавычки, чтобы он не был разделен.

Но этого недостаточно, потому что буквенные переводы строки также не допускаются в JSON.Вам нужно перевести переводы строк на \n.

У вас также была заключительная кавычка не в том месте, она должна быть в конце JSON, а не в конце строки.

bigfiles=$(find -type f -size +1M)
bigfiles=${bigfiles// /\\n}
curl -u $username  -d '{"title" : "Big Files List" , "body" : "'"$bigfiles"'", "label" : "big files" }' $URL -k
...