好的,这就是我要做的事情。我正在尝试在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中使用字符串操作时我不是专家,所以我可以认真地使用一些帮助。谢谢!
答案 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等),因为它在您的文件中。然后您会看到每行代码都将变量扩展为其值。
如果您仍然卡住,请编辑帖子以显示脚本中问题行的扩展变量值。你乍一看看起来很合理。