问题
想要把 Linux 上不同的文本数据通过 Jenkins 发送邮件给不同的人。
思路
想通过 Shell 先对数据进行处理,然后返回到 Jenkins pipeline 里,但只能得到 Shell 返回的字符串,因此需要在 Jenkinsfile 里把字符串处理成数组,然后通过一个 for 循环对数组中的值进行处理。
以下是要处理的文本数据:
# Example
$ ls
fail-list-user1.txt fail-list-user2.txt fail-list-user3.txt
要将以上文件通过 Jenkins 分别进行处理,得到用户 user1,user2,user3 然后发送邮件。
解决
字符串截取
通过 Shell 表达式只过滤出 user1 user2 user3
# list 所有以 fail-list 开头的文件,并赋给一个数组 l
l=$(ls -a fail-list-*)
for f in $l;
do
f=${f#fail-list-} # 使用#号截取左边字符
f=${f%.txt} # 使用%号截取右边字符
echo $f # 最终输出仅包含 user 的字符串
done
测试结果如下:
$ ls
fail-list-user1.txt fail-list-user2.txt fail-list-user3.txt
$ l=$(ls -a fail-list-*) && for f in $l; do f=${f#fail-list-}; f=${f