是否可以在 bash 腳本中定義一個函式,該函式通常為不同用戶定義 git 別名,以便讓用戶在共享系統上應用他們的更改,以便提交包含他們的用戶名和電子郵件?
alias git_as_user1='GIT_AUTHOR_NAME="User1_pre User1_sur" GIT_AUTHOR_EMAIL="[email protected]" GIT_SSH="/home/account/ssh_user_wrapper.sh" GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL git'
我想出了以下函式,但它不會在定義別名時評估 args,但稍后會在呼叫別名時評估。這是無意的,并且使該方法無用。
function alias_git_as ()
{
alias git_as_$1='GIT_AUTHOR_NAME=$1 GIT_AUTHOR_EMAIL=$2
}
在 .basrc 中:
alias_git_as "login" "Surname Prename" "[email protected]"
-> 行不通!!!-> 定義 alias git_as_login,但第二個和第三個 arg 被忽略。當某個用戶git_as_login從他的終端運行時,他需要再次傳遞“Surname Prename”“[email protected]”。但是應該在定義別名時捕獲 args。
uj5u.com熱心網友回復:
兩個問題:
- 您使用單引號,但那些會抑制擴展;為了使擴展盡早發生,您需要雙引號。
- 您的原始代碼僅采用兩個引數,但您的示例用法使用三個。
此外,為了使用帶空格的名稱,我們使用${var@Q}下面的 bash 5.x 功能。
# define the function
alias_git_as() { alias "git_as_$1=GIT_AUTHOR_NAME=${2@Q} GIT_AUTHOR_EMAIL=${3@Q}"; }
# use the function
alias_git_as "login" "Surname Prename" "[email protected]"
# use the invoked alias
git_as_login
在https://ideone.com/PV09NG看到這個作業
與舊版本的 bash 兼容同時仍保留對不尋常作者姓名的支持的版本可能看起來像:
alias_git_as() {
local alias_def
printf -v alias_def 'git_as_%s=GIT_AUTHOR_NAME=%q GIT_AUTHOR_EMAIL=%q' "$1" "$2" "$3"
alias "$alias_def"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524801.html
標籤:重击混帐别名混帐配置
上一篇:從蛋酒映射器輸出制作KO注釋表
