微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jenkins bash 脚本 - 从查找命令结果中删除目录路径

如何解决jenkins bash 脚本 - 从查找命令结果中删除目录路径

我需要在我的 dist 目录中搜索 jenkins 中缩小的 .js 和 .css 文件

我有一个带有 find cmd 的 bash 脚本,如下所示:

for path in $(/usr/bin/find dist/renew-online -maxdepth 1 -name "*.js" -or -name "*.css" -type f); do
# URL of the JavaScript file on the web server
url=$linkTarget/$path
echo "url=$linkTarget/$path"

linkTarget 在哪里:http://uat.xxxx.com/renew-online

我想将 dist/renew-online 的缩小文件附加到 linkTarget, 例如:

http://uat.xxxx.com/renew-online/main-es2015.cf7da54187dc97781fff.js

但我不断收到:http://uat.xxxx.com/renew-online/dist/renew-online/main-es2015.cf7da54187dc97781fff.js

我也尝试过 -maxdepth 0 但无法获得正确的网址 - 脚本新手!

希望你们中的一位能帮忙,谢谢你的时间

解决方法

这只能通过使用'find'命令来实现:

/usr/bin/find dist/renew-online -maxdepth 1 \( -name "*.js" -o -name "*.css" \) -type f -printf "$linkTarget/%f\n"

还建议将 'or' 语句隔离在圆括号内。

,

这更像是一个 bash 问题而不是 jenkins 问题,您有多种方法可以做到。

如果您的所有文件都在一个路径中,并且实际上您正在强制使用深度,则可以使用剪切

for path in $(/usr/bin/find dist/renew-online -maxdepth 1 -name "*.js" -or -name "*.css" -type f | cut -d'/' -f2); do

另一方面,这里 https://serverfault.com/questions/354403/remove-path-from-find-command-output 的用法是 -printf '%f\n'

另请注意,在 for loop 中使用 find 是脆弱的,建议使用 while https://github.com/koalaman/shellcheck/wiki/SC2044

编辑 cut 中使用的字段取决于您在查找语法中的文件夹。最准确的方法是上面serverfault链接里的那个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?