我创建了comment-added
Gerrit(v.2.8)钩子:
PROJECT="UNKNOWN"
AUTHOR="UNKNOWN"
while [[ $# > 1 ]]
do
key="$1"
shift
case $key in
--project)
PROJECT="$1"
shift
;;
--author)
AUTHOR="$1"
shift
;;
*)
# unknown option
;;
esac
done
# do something with the $PROJECT variable
来自this answer的争论阅读理念。根据{{3}},应该使用project
和author
参数调用此钩子。如果我使用以下命令模拟调用,一切正常:
./commend-added --branch test --project testproject --author testauthor --whatever sth
但是,当从Gerrit执行钩子时,PROJECT
和AUTHOR
变量都具有默认的UNKNOWN
值。为什么呢?
我从Gerrit调用时检查过$#
变量的值为16
。我还验证了从Gerrit调用脚本时永远不会执行while
循环。
我还尝试了另一个带$#
变量的循环,但它既没有执行:
for ((i=1; i<=$#; i++)); do
# do something
done
但是,我可以迭代$@
变量。通过使用它,我还验证了Gerrit提供给脚本的参数与文档中的相同。
我做错了什么?如何在Gerrit执行钩子时读取参数?
答案 0 :(得分:0)
我怀疑gerrit在不解析命令行的情况下执行钩子。
如果发生这种情况,您只需在脚本的开头添加:
set $*
这将再次解析命令行。