2012-01-17 3 views
10

좋아, 여기에 내가하려는 일이있다. 원격 서버의 GitHub에서 개인 저장소를 체크 아웃 할 bash에 빠른 빌드 스크립트를 작성하려고합니다. 가능한 한 손을 놓기 위해 원격 서버에 로컬 RSA 키 세트를 생성하고 공개 키를 특정 저장소의 배포 키로 추가하려고합니다. GitHub의 API를 사용하여이 작업을 수행하는 방법을 알고 있지만 Bash를 사용하여 JSON 페이로드를 작성하는 데 문제가 있습니다. 그냥 제대로 페이로드를 구축 아니에요BASH 스크립트 내에서 cURL을 사용하여 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 

당신이 당신의 bash는 스크립트의 상단에 set -vx을 쉘의 디버깅 옵션을 사용하는 경우 디버깅하기가 훨씬 쉬울 것입니다 .

이 파일에서와 같이. 그런 다음 그 값에 확장 변수와 코드의 각 라인 참조) 등, 동안 당신은, 코드 (또는에 대한 블록 (각 라인을 볼 수

.

당신이 만약 여전히 문제가 지속되면 스크립트에서 문제가되는 줄에 대한 변수의 확장 된 값을 표시하도록 글을 수정하십시오. 한눈에 알 수있는 내용

+1

당신은 신사이고 학자입니다.이 모든 것을 배워야했습니다. 꽤 힘들어서 Bash에서 적절한 탈출 및 문자열 조작을 완전히 이해하지 못했습니다. 감사합니다. –

+2

통찰력과 예리한 분석 기술을 자랑스럽게 생각합니다! 계속 노력하여 성공했습니다. ;-) – shellter

+0

정말 고마워요! 부적절한 유사한 질문에 대한 몇 가지 다른 답변이 있습니다. 이것은 내가 필요한 것입니다! – Brian

관련 문제