Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set the output of sh to a Groovy variable? [duplicate]

Is it possible to have the output of the sh command be set to a Groovy variable? It seems to be setting it to the status of the command instead.

Example input:

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

Results in the following output:

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

It is showing The current date is 0, I want it to show The current date is Tue May 10 01:15:05 UTC 2016 which you can see has been output by the sh command. Am I going about this all wrong?

like image 514
Matt Dodge Avatar asked May 10 '16 01:05

Matt Dodge


1 Answers

Yes, sh is returning the exit status. Currently your best bet is:

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

ADDENDUM: after this answer was written a new option was added to the sh step, use returnStdout: true to get the result string from the sh call.

like image 184
amuniz Avatar answered Oct 18 '22 02:10

amuniz