Невозможно запустить сценарий оболочки внутри конвейера Jenkins

Я могу запустить следующий сценарий оболочки, но не могу запустить из кода конвейера Jenkins.

Попробуйте 1.

node('buildnode') {

def value = "Myvalue"

def key = "Mykey"

sh '''

DATA=$(printf "%-50s \"$key\"" "$value")

echo "$DATA"

'''

}

выход:

++ printf '%-50s ' ''
+ DATA=' 

Попробуйте 2:

Пробовал с ш " " "

DATA=$(printf "%-50s \"$key\"" "$value")

echo "$DATA"

" " "

вывод:

недопустимый символ тела строки после знака доллара; решение: либо избежать буквального знака доллара "\$5" или заключите в скобки выражение значения "${5}"

Кто-нибудь может мне помочь?

1 ответ

Решение

Это должно работать.

node('buildnode') {
    def value = "Myvalue" 
    def key = "Mykey"

    sh """
    DATA=\$(printf "%-50s \"${key}\" \"${value}\"")
    echo "\$DATA"
    """
}

Вы также должны экранировать $ при вызове нового subshell в разделе """ """

DATA=$(printf "%-50s \"${key}\" \"${value}\"")
Другие вопросы по тегам