Интерполяция переменных внутри 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
значение перед его использованием.