您好我对一个问题感到困惑,现在我在Jenkins中有这个脚本
curl -H "Authorization: Basic $key"
-F file=@"case/target/$POM_ARTIFACTID-$POM_VERSION.zip" -X POST $CLOUDHUB_DEPLOY_URL
它从POM.xml获取Artifact id和Version所以在这种情况下它是 “test-1.0.0”.zip。这是基于POM,文件的正常名称是“test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip”,但我想让$ POM_ARTIFACTID与 - 并读取其余字符串(7c605e12ee7d9424d3a67a656a73bb14c6c92d78)并将其附加到文件名。我试着做一些正则表达式作为-F file = @“case / target / $ POM_ARTIFACTID - / * .zip”但不幸的是它没有帮助。如果听起来很难看的话,我对shell脚本非常陌生。
答案 0 :(得分:0)
我的理解是你在磁盘上有一个文件:
% ls case/target/test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip
case/target/test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip
你是对的,因为通讯不适用于curl的表单上传:
% curl -F file=@"case/target/test-*.zip" -X POST localhost:80
curl: (26) couldn't open file "case/target/test-*.zip"
但你可以使用shell globbing来获取你的文件:
% file="$(ls case/target/test-*.zip)"
% echo $file
case/target/test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip
然后它起作用:
% curl -F file=@"${file}" -X POST localhost:80
<html><body><h1>It works!</h1></body></html>
您的命令可能如下所示:
file="$(ls case/target/$POM_ARTIFACTID-*.zip)"
curl -H "Authorization: Basic $key" -F file=@"${file}" -X POST $CLOUDHUB_DEPLOY_URL