HTTP 문자열에 자격 증명을 삽입하시겠습니까?

HTTP 문자열에 자격 증명을 삽입하시겠습니까?

git 에 있는 git 자격 증명 파일을 올바르게 채울 수 있도록 사용자 자격 증명을 HTTP 문자열에 삽입해야 합니다 ~/.git-credentials.

시작해야 했던 세 가지 환경 변수는 다음과 같습니다.

user="someUser"
pass="somePass"
uri="http://sometld.org/path/repo.git"

이것저것 살펴봤지만 비표준 경로( )가 아닌 awkGithub 스타일 복제 경로( )에서만 작동합니다 .https://github.com/org/repo.githttps://git.private.org/scm/~user/path/repo.git

proto=$(echo $uri | awk -F"/" '{print $1}')
domain=$(echo $uri | awk -F"/" '{print $3}')
repo_path=$(echo $uri | awk -F"/" '{print $4}')
repo_name=$(echo $uri | awk -F"/" '{print $5}')
echo "$proto//$user:$pass@$domain/$repo_path/$repo_name"
# http://someUser:[email protected]/path/repo.git

내 파일을 채우기 위해 HTTP 문자열에 사용자 이름과 비밀번호를 삽입하는 ~/.git-credentials가장 좋고 쉬운 방법은 무엇입니까 ?

답변1

$ sed -e "s^//^//$user:$pass@^" <<<$uri
http://someUser:[email protected]/path/repo.git

이는 문자열 내에서 대체되며 //어디에서나 사용할 수 있습니다.//$user:$pass@$uri

특히 Bash에서는:

$ echo ${uri/\/\////$user:$pass@}
http://someUser:[email protected]/path/repo.git

동일한 대체 작업을 수행합니다.- 이것이 바로 그것인데 ${variable/pattern/replacement}, 여기에서는 구분 기호를 변경할 수 없기 때문에 패턴에서 슬래시를 이스케이프 처리해야 합니다.

관련 정보