2010-12-10 72 views
1

j'ai une commande curl qui a besoin de faire un post et envoyer ma clé ssh comme l'un des params, la commande J'utilise ressemble à ceci:Aide avec une commande boucle et la lecture d'un fichier

SSH_KEY=`cat ~/.ssh/id_rsa.pub`; 
curl -d "login=username&token=apikey&title=test&key=$SSH_KEY" http://github.com/api/v2/yaml/repos/key/username/somerepo/add 

le problème est qu'il ya un + dans la clé ssh et la chaîne se termine à ce moment-là, comment puis-je éviter cela?

Répondre

3

Apparemment, dans la version 7.18.0 boucle ajouté l'option --data-urlencode:

curl --data-urlencode "login=username&token=apikey&title=test&key=$SSH_KEY" http://github.com/api/v2/yaml/repos/key/username/somerepo/add 
0
urlencode() 

Est-ce que je pense que vous cherchez? Vous pouvez remplacer automatiquement les caractères spéciaux en utilisant urlencode() sur la chaîne.

http://php.net/manual/en/function.urlencode.php pour plus d'informations à ce sujet.

également plus d'informations sur: curl.haxx.se/docs/manpage.html faire une recherche de page pour: urlencode

Hope that helps :)

1

Utilisation --data-urlencode au lieu de -d.

0

Pour envoyer un fichier add '@' devant le nom du fichier

curl -d "login=username&token=apikey&title=test&[email protected]~/.ssh/id_rsa.pub" \ 
http://github.com/api/v2/yaml/repos/key/username/somerepo/add 

Hope this helps.