Использование cURL для отправки JSON в BASH script

Хорошо, вот что я пытаюсь сделать. Я пытаюсь написать быстрый сборник script в bash, который будет проверять частный репозиторий от GitHub на удаленном сервере. Чтобы сделать это "как можно лучше", я хочу создать локальный ключ RSA на удаленном сервере и добавить открытый ключ в качестве ключа развертывания для этого конкретного репозитория. Я знаю, как это сделать с помощью API GitHub, но мне сложно создать полезную нагрузку JSON, используя Bash.

До сих пор этот конкретный процесс был приведен ниже:

#!/bin/bash

ssh-keygen -t rsa -N '' -f ~/.ssh/keyname -q
public_key=`cat ~/.ssh/keyname.pub`

curl -u 'username:password' -d '{"title":"Test Deploy Key", "key":"'$public_key'"}' -i https://api.github.com/repos/username/repository/keys

Он просто неправильно создает полезную нагрузку. Я не эксперт, когда дело доходит до строковых манипуляций в Bash, поэтому я могу серьезно использовать некоторую помощь. Спасибо!

Ответ 1

Это не точно, но это может помочь указать, где вы используете public_key, т.е.

curl -u 'username:password' \
   -d '{"title":"Test Deploy Key", "key":"'"$public_key"'"}' \
   -i https://api.github.com/repos/username/repository/keys

В противном случае отладка будет гораздо проще, если вы используете опции отладки оболочки set -vx в верхней части вашего bash script.

Вы увидите каждую строку кода (или блок (для, while и т.д.), как это есть в вашем файле. Затем вы видите каждую строку кода с переменными, расширенными до их значений.

Если вы все еще застряли, отредактируйте сообщение, чтобы показать расширенные значения переменных для проблемной строки в script. На первый взгляд вы выглядите разумно.