2015-07-11 48 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

我会试试这个。谢谢。 –