Проблемы с расширением выражения в объекте JSON

Я пытаюсь использовать 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 ответ

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
Другие вопросы по тегам