我正在写一个脚本来挑选Gerrit的所有公开更改。虽然我需要能够更改输入,但是我没有为每个使用特定repo信息硬编码的repo编写脚本,我找到了一个。
#! /bin/sh
REMOTE="${1-review}"
ssh -p 29418 user@gerrit.remote.com 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
可以是输入的内容。
我认为我几乎在那里虽然在这一点上完全被困住了。
答案 0 :(得分:1)
假设$ 1等于“XX”。你的代码:
PROJECT="$1"
将分配PROJECT = XX。接下来,
if [ "$1" = "XX" ]; then
是真的,“then”子句将被执行。该条款是:
"$PROJECT="project:name of project"
试图执行命令“XX = ...”,导致“命令未找到”
建议,在此行中删除$,如:
PROJECT="project:name of project"