2016-05-10 13 views
3

Возможно ли, чтобы выход команды sh был установлен на переменную Groovy? Кажется, он устанавливает его статус команды.Как установить выход sh в переменную Groovy?

Пример ввода:

node { 
    stage "Current Date" 
    def curDate = sh "date" 
    echo "The current date is ${curDate}" 
} 

Результаты в следующий вывод:

Entering stage Current Date 
Proceeding 
[Pipeline] sh 
[workspace] Running shell script 
+ date 
Tue May 10 01:15:05 UTC 2016 
[Pipeline] echo 
The current date is 0 

Это показывает The current date is 0, я хочу, чтобы показать The current date is Tue May 10 01:15:05 UTC 2016, которые вы можете увидеть, была выведена с помощью команды ш. Неужели я все это делаю неправильно?

ответ

10

Да, sh возвращает статус выхода. В настоящее время Ваш лучший выбор:

sh 'date > outFile' 
curDate = readFile 'outFile' 
echo "The current date is ${curDate}" 

ДОПОЛНЕНИЕ: после того, как этот ответ был написан новый вариант был добавлен в sh шага, используйте returnStdout: true, чтобы получить результирующую строку из sh вызова.

+0

О, хорошо, это хороший обходной путь. Похоже, 'sh' должен поддерживать использование stdout в качестве вывода; но опять же, я не знаю даже достаточно близко к тому, что Groovy получил мнение о таких дизайнерских решениях. Спасибо за ответ. –

+0

https://issues.jenkins-ci.org/browse/JENKINS-26133 в настоящее время идет. Он будет охватывать этот прецедент. – amuniz

+0

Вопрос старше, но я использую что-то вроде этого: 'sh (script:" date ", returnStdout: true) .toString(). Trim()' – Balkrishna

Смежные вопросы