Интерполяция переменных внутри Jenkinsfile

Я прошу о помощи сейчас, потому что я боролся с простым sed команда для вызова внутри Jenkinsfile, которая нуждается в небольшой переменной интерполяции.

Лучше показать команду вместо большого объяснения:

sh "sed -i -e 's/-RELEASE/-${unixEpoch}/g' myFile"

sed не согласен с этим синтаксисом и выводит, что команда s/ не закончен

Я прочитал Groovy документацию о String и GString, но я все еще не понимаю, что я делаю неправильно?

Есть какие-нибудь подсказки по этому поводу?

РЕДАКТИРОВАТЬ:

Я получаю unixEpoch позвонив date +%s чтобы получить текущую метку времени.

Я напечатал команду, чтобы быть уверенным, что выполнено, и нашел:

sed -i -e 's/-RELEASE/-1525341883'
/g' myFile

Полная ошибка отправлена sed является:

sed: -e expression #1, char 22: unterminated 's' command

Я нашел странным, что напечатанная команда имеет \n в середине этого...

1 ответ

Решение

date +%s в конце есть новая строка, и когда вы интерполируете ее в ваш сгенерированный sed это включает в себя тот перевод строки, который объясняет, почему sed жалуется. Вы могли бы сделать ${unixEpoch.trim()} или обрезать unixEpoch значение перед его использованием.

Другие вопросы по тегам