在使用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 {} +"