如何解决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 举报,一经查实,本站将立刻删除。