在使用jenkins pipeline编写脚本出现了一个奇怪的问题,通过调式才发现是通配符的问题,需要将特殊字符转义,很多语言都有类似的问题,需要特别注意。

执行下面语句出现问题,
sh "rm -f ${path}/jar"

结果是会在执行体上加引号导致执行语句没有成功
rm -f '${path}/jar'

查找解决方案

1.通配符加单引号,通配符转义都不行
2.通过eval ls 原文地址

file_name=`eval ls *$yesterday_dir-*`
tar_log(){
        tar zcvf $log_time.tar.gz $file_name  --remove-files
        mv $log_time.tar.gz $yesterday_dir
 }

3.通过查找方式删除(我最后用的是这个方案解决了)

sh "/bin/find ${path} -name '\\*.jar' -type f -exec /bin/rm -f {} +"