Я пытаюсь выполнить сценарий оболочки из функции groovy, загруженной jenkins-pipe, для извлечения zip-файла из внешнего местоположения.Я строю адрес в функции и передаю его в скрипт оболочки через $.Но я получаю синтаксическую ошибку и не знаю почему.
Я пытался избежать $, но не думаю, что это правильный подход, и мой код был покрыт от тройных одинарных кавычек ('' ') до тройных двойных ("" "), чтобы я мог передать переменнуюв.
def DownloadBaseLineFromNexus(groupID, artifactID){
//add code for this method
def nexusLink = "${GetNexusLink()}/${GetNexusProdRepo()}/${groupID}/${artifactID}/"
sh """
# retrieving all available version from release repo to versionFile.xml
curl ${nexusLink} | grep "<a href=.*</a>" | grep "http" | cut -d'>' -f3 |cut -d'/' -f1 > versionFile.xml
# creating array from versionFile.xml
fileItemString=$(cat versionFile.xml |tr "\n" " ")
fileItemArray=($fileItemString)
# Finding maximum of array element
maxValue=`printf "%d\n" "${fileItemArray[@]}" | sort -rn | head -1`
# Download latest version artifact from nexus
curl -o ${(artifactID)}.zip ${(nexusLink)}/${(artifactID)}-$maxValue.zip
# Unzip the tool
unzip ${(artifactID)}.zip
"""
}
результаты, которые я получаю:
Script1.groovy: 28: недопустимый символ тела строки после знака доллара; решение: либо экранировать буквальный знак доллара "\ $ 5", либозаключите в скобки значение выражения "$ {5}" @ строка 28, столбец 22. curl "$ {nexusLink}" | grep "" | grep "http" | cut -d '>' -f3 | cut -d '/' -f1> versionFile.xml