【问题标题】:Using cURL to send JSON within a BASH script使用 cURL 在 BASH 脚本中发送 JSON
【发布时间】:2012-02-12 18:20:40
【问题描述】:

好的,这就是我想要做的。我正在尝试在 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 中进行字符串操作时,我不是专家,所以我可以认真使用一些帮助。谢谢!

【问题讨论】:

    标签: bash curl ssh github


    【解决方案1】:

    不确定,但它可能有助于引用您使用 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 等)。然后您会看到每一行代码,其中的变量扩展为它们的值。

    如果您仍然卡住,请编辑您的帖子以显示脚本中问题行的变量的扩展值。乍一看,您所拥有的似乎是合理的。

    【讨论】:

    • 你是一个绅士和一个学者。我必须非常匆忙地学习所有这些东西,所以我还没有真正完全掌握 Bash 中正确的转义和字符串操作。谢谢!
    • 我赞扬您先生的洞察力和敏锐的分析能力!在您的努力中不断取得成功! ;-)
    • 非常感谢!对于类似的问题,还有其他一些不正确的回答。这正是我所需要的!
    • 8 年后它对我有帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 2014-02-21
    • 2012-07-29
    • 2016-05-03
    • 2019-12-20
    • 2023-03-19
    • 2014-07-27
    相关资源
    最近更新 更多