Bash

將憑據插入 HTTP 字元串?

  • April 10, 2018

我需要將使用者憑據插入到 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},但有必要轉義模式中的斜杠,因為我們無法在此處更改分隔符。

引用自:https://unix.stackexchange.com/questions/436658