web-dev-qa-db-ja.com

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を表示していますが、shコマンドで出力されたThe current date is Tue May 10 01:15:05 UTC 2016を表示したいのですが。私はこれについてすべて間違っていますか?

5
Matt Dodge

はい、shは終了ステータスを返しています。現在の最善の策は次のとおりです。

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

補遺:この回答が書き込まれた後、新しいオプションがshステップに追加され、returnStdout: trueを使用して、sh呼び出しから結果文字列を取得します。

13
amuniz