2015-07-11 33 views
-2

我寫了一個腳本櫻桃選擇從Gerrit所有打開的更改。我找到了一種可行的方法,但我需要能夠更改輸入,以便我沒有爲每個具有特定回購庫信息硬編碼的回購腳本提供腳本。Bash腳本幫助「如果(用戶輸入)=然後(var)=」

#! /bin/sh 
REMOTE="${1-review}" 

ssh -p 29418 [email protected] gerrit query --format=text --patch-sets status:open branch:XXX project:XXX | grep revision: | awk '{print $2;}' | while read ID 

do 
    git fetch "${REMOTE}" && git cherry-pick "${ID}" 

done 

現在我已經能夠成功地挑開的變化,但我想使它這樣我可以通過輸入更改用戶名,分公司,項目和遙控器。使用當前的方法,我需要手動輸入我的用戶名,項目,分支和遠程腳本。那麼它只對那個特定的回購有好處。

我一直在使用if/then聲明發生問題。我知道,現在看來,我所要求的任何東西都是編碼的,但我想爲某人提供一個工作模型。

我確實更改了用戶名和特定的詳細信息,很容易讓某人自己使用此腳本通過插入必要的信息進行櫻桃挑選。

如果我做這樣的事情:

PROJECT="$1" 

if [ "$1" = "XX" ]; then 
    "$PROJECT="project:name of project" 

然後bash返回XX command not found。我不想讓它成爲我希望它被輸入以後插入到ssh命令中的命令。此外,我試圖不僅使用if而且還else if,以便PROJECT可以是任何輸入。

我覺得我幾乎在那裏雖然完全在這一點上難倒。

回答

1

假設$ 1等於「XX」。您的代碼:

PROJECT="$1" 

將分配PROJECT = XX。接下來,

if [ "$1" = "XX" ]; then 

爲true,則將執行「then」子句。這一條款是:

"$PROJECT="project:name of project" 

試圖執行命令 「XX = ...」,引起

建議,在此行中刪除$,如 「未找到命令」:

PROJECT="project:name of project" 
+0

我會試試這個。謝謝。 –