2012-01-17 38 views
10

好的,這是我正在嘗試做的。我正在嘗試在bash中編寫一個快速構建腳本,它將檢查遠程服務器上GitHub的私有存儲庫。爲了做到這一點,我想在遠程服務器上生成一個本地RSA密鑰集,並將該公鑰添加爲該特定存儲庫的部署密鑰。我知道如何使用GitHub的API來做到這一點,但我在使用Bash構建JSON負載時遇到了問題。使用cURL在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中,我不是專家,所以我可以認真地使用一些幫助。謝謝!

回答

22

這不是一定的,但它可以幫助引用您在何處使用PUBLIC_KEY,即

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

否則會容易得多,如果你使用shell的調試選項set -vx靠近你的bash腳本的頂部調試。

你會看到的代碼(或塊(每個行,同時,等),因爲它是在你的文件,然後你看到擴大到它們的值的變量的每一行代碼。

如果您'仍然卡住了,編輯你的帖子以顯示腳本中問題行的變量的擴展值。乍一看你看起來很合理。

+1

你是一個紳士和學者,我必須學習所有這些東西因爲我很忙,所以我並沒有完全掌握在Bash中正確的轉義和字符串操作,謝謝! – 2012-01-18 00:10:35

+2

我讚揚你的先生的洞察力和敏銳的分析能力!在你的努力中繼續取得成功!-) – shellter 2012-01-18 00:30:02

+0

非常感謝你!對類似的問題還有其他一些答案是不正確的。這正是我需要的! – Brian 2015-03-23 18:49:29