Shell脚本 - 获取整个文件名

时间:2017-04-21 13:42:52

标签: shell maven jenkins

您好我对一个问题感到困惑,现在我在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脚本非常陌生。

1 个答案:

答案 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