阅读 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

争论者从这个答案中阅读的想法。根据文档,这个钩子应该同时使用 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 执行钩子时如何阅读参数?

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

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

set $*

这将再次解析命令行。

相关内容

  • 没有找到相关文章

最新更新