2016-05-10 14 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は、shコマンドによって出力された示したいと思います。私はこれについてすべて間違っているのですか?

答えて

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

関連する問題