错误:在声明性Jenkinsfile中使用Bash脚本

时间:2019-03-05 07:51:34

标签: bash jenkins-pipeline dash-shell jenkins-groovy groovyshell

在Jenkinsfile中编写我的bash脚本代码时,我面临一些挑战。 UserCase:我在一个GIT存储库的文件夹结构中保留了多个工具代码。我希望每当开发人员对单个文件夹进行更改时,都会触发针对特定文件夹相关代码的构建。
我的逻辑:选择最后两个提交,找到区别。根据差异,根据更改的文件进行构建。 我写了bash脚本,它在linux机器上运行良好。将其移入Jenkinsfile内部后,我遇到了一些错误。 这可能是特定于常规的。 需要这些帮助

#!/bin/bash
git log -2 --no-merges | grep commit > git_commit.txt
cat git_commit.txt
echo 'hi'
i=0;
while read -r line;
do
    commit[$i]=`echo "$line" | awk '{print \$2}'`
    i=$((i+1))
done < git_commit.txt

这不是完整的代码。分配值时出现错误:

commit[$i]=`echo "$line" | awk '{print \$2}'`

如果您知道进一步的帮助说明,请告诉我。

1 个答案:

答案 0 :(得分:0)

我刚抓到它。在bash中分配var是一个愚蠢的错误。我在分配awk命令的输出中添加了eval。所以我的代码更改是:

eval commit[$i]=`echo "$line" | awk '{print \$2}'`

不确定评估对我有多大帮助,但现在已解决。