2017-04-21 74 views
-1

嗨我有点困惑一个问题,现在我有这个剧本在我的詹金斯shell脚本 - 让整个文件名

curl -H "Authorization: Basic $key" -F [email protected]"case/target/$POM_ARTIFACTID-$POM_VERSION.zip" -X POST $CLOUDHUB_DEPLOY_URL

它从pom.xml中工件ID和版本,所以在这种情况下,它是 “test-1.0.0”.zip。这是基于POM,文件的正常名称是“test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip”,但我想只让$ POM_ARTIFACTID与 - 并读取字符串的其余部分(7c605e12ee7d9424d3a67a656a73bb14c6c92d78)并将其附加到文件名。我试图做一些正则表达式为-F file = @“case/target/$ POM_ARTIFACTID -/*。zip”,但不幸的是它没有帮助。如果听起来很丑,我对shell脚本非常陌生。

回答

0

我的理解是,你有这样的磁盘上的文件:

% ls case/target/test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip 
case/target/test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip 

你说得对,通配不卷曲的形式上传工作:

% curl -F [email protected]"case/target/test-*.zip" -X POST localhost:80 
curl: (26) couldn't open file "case/target/test-*.zip" 

但你可以使用通配符外壳先得到你的文件:

% file="$(ls case/target/test-*.zip)" 
% echo $file 
case/target/test-7c605e12ee7d9424d3a67a656a73bb14c6c92d78.zip 

,然后它的工作原理:

% curl -F [email protected]"${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 [email protected]"${file}" -X POST $CLOUDHUB_DEPLOY_URL