Bash
將憑據插入 HTTP 字元串?
我需要將使用者憑據插入到 HTTP 字元串中,以便可以在
~/.git-credentials
.這些是我必須開始的三個環境變數:
user="someUser" pass="somePass" uri="http://sometld.org/path/repo.git"
我一直在擺弄
awk
,但它只適用於 Github 風格的複製路徑(https://github.com/org/repo.git
),不適用於非標準路徑(https://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:somePass@sometld.org/path/repo.git
將使用者名和密碼插入 HTTP 字元串以便填充
~/.git-credentials
文件的最佳/最簡單方法是什麼?
$ sed -e "s^//^//$user:$pass@^" <<<$uri http://someUser:somePass@sometld.org/path/repo.git
這在字元串中替換
//
為,並且可以在任何地方使用。//$user:$pass@``$uri
特別是在 Bash 中:
$ echo ${uri/\/\////$user:$pass@} http://someUser:somePass@sometld.org/path/repo.git
將執行相同的替換- 這只是
${variable/pattern/replacement}
,但有必要轉義模式中的斜杠,因為我們無法在此處更改分隔符。