使用cURL在BASH脚本中发送JSON

Wil*_*och 10 ssh bash curl github

好吧,这就是我想要做的.我正在尝试在bash中编写一个快速构建脚本,该脚本将从远程服务器上的GitHub检出私有存储库.要做到这一点,尽可能"手动",我想在远程服务器上生成本地RSA密钥集,并将公钥添加为该特定存储库的部署密钥.我知道如何使用GitHub的API来做到这一点,但是我在使用Bash构建JSON有效负载时遇到了麻烦.

到目前为止,我有以下特定流程:

#!/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
Run Code Online (Sandbox Code Playgroud)

它只是没有正确构建有效载荷.在Bash中使用字符串操作时我不是专家,所以我可以认真地使用一些帮助.谢谢!

she*_*ter 22

这不确定,但它可能有助于引用你使用public_key的地方,即

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

否则,如果set -vx在bash脚本顶部附近使用shell的调试选项,则调试会更容易.

您将看到每行代码(或块(for,while等),因为它在您的文件中.然后您会看到每行代码都将变量扩展为其值.

如果您仍然卡住,请编辑帖子以显示脚本中问题行的变量的扩展值.你乍一看看起来很合理.

  • 我赞扬你先生的见解和敏锐的分析能力!你的努力继续取得成功!;-) (2认同)