在Gerrit钩子脚本中读取参数

时间:2014-01-08 23:48:58

标签: bash hook gerrit

我创建了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}},应该使用projectauthor参数调用此钩子。如果我使用以下命令模拟调用,一切正常:

./commend-added --branch test --project testproject --author testauthor --whatever sth

但是,当从Gerrit执行钩子时,PROJECTAUTHOR变量都具有默认的UNKNOWN值。为什么呢?

我从Gerrit调用时检查过$#变量的值为16。我还验证了从Gerrit调用脚本时永远不会执行while循环。

我还尝试了另一个带$#变量的循环,但它既没有执行:

for ((i=1; i<=$#; i++)); do
    # do something
done

但是,我可以迭代$@变量。通过使用它,我还验证了Gerrit提供给脚本的参数与文档中的相同。

我做错了什么?如何在Gerrit执行钩子时读取参数?

1 个答案:

答案 0 :(得分:0)

我怀疑gerrit在不解析命令行的情况下执行钩子。

如果发生这种情况,您只需在脚本的开头添加:

set $*

这将再次解析命令行。