bash - 错误:在声明性 Jenkinsfile 中使用 Bash 脚本
问题描述
在 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}'`
如果您知道进一步的解释以提供帮助,请告诉我。
解决方案
我刚抓住它。这是在 bash 中分配 var 的愚蠢错误。我在分配 awk 命令的输出时添加了 eval 。所以我的代码更改是:
eval commit[$i]=`echo "$line" | awk '{print \$2}'`
不知道 eval 如何帮助我,但现在解决了。
推荐阅读
- html - 当第二个验证器通过时,不显示 parsly 验证器消息
- apache - 使用参数重定向 URL
- python-3.x - 从python中的列表中提取特定字段
- c++ - 为什么在 std 命名空间中定义了 cin、cout、endl 等?
- c# - 在类中使用方法和返回值
- visual-studio - VSTO Visio 插件 - 单击一次 EULA 依赖
- php - 使用 php 每隔几秒调用一次
- python - matplotlib FuncFormatter 字符串格式化带入图形坐标
- java - 如何在android中使用Room Library fts4查询整个表
- c# - 在 Azure 搜索 .NET SDK 中按复杂类型排序?