使用cURL在BASH脚本中发送JSON

时间:2012-01-17 23:35:51

标签: bash curl ssh 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

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

1 个答案:

答案 0 :(得分:22)

这不确定,但引用你使用public_key的地方可能会有所帮助,即

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

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

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

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