2017-04-21 57 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