我需要在jenkins groovy 中重現以下 Python 代碼
city='Petersburg'
varname='city'
varvalue=eval(varname)
print(varvalue) # prints 'Petersburg'
也就是說,我需要將一個變數的值分配給另一個知道源變數名稱作為字串的變數。
請提供用 jenkins groovy 撰寫的相同代碼(我可以將其插入到 Jenkinsfile 中)
補充細節
基于這篇文章,我嘗試了 groovy eval類:
city='Petersburg'
varname='city'
varvalue=Eval.me(varname)
println(varvalue)
它在 jenkins 控制臺輸出中輸出以下錯誤:
hudson.remoting.ProxyException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: expecting ''', found '<EOF>' @ line 1, column 15.
varvalue='city
我還嘗試了以下代碼(使用 groovy Eval 作為 Python exec):
city='Petersburg'
varname='city'
Eval.me('varvalue=\'' varname)
println(varvalue)
產生了同樣的錯誤:
hudson.remoting.ProxyException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script1.groovy: 1: expecting ''', found '<EOF>' @ line 1, column 15.
varvalue='city
uj5u.com熱心網友回復:
該Eval.me函式在單獨的執行背景關系中評估腳本,因此無法訪問您在訪問它之前定義的變數(請參閱評估檔案)。
因此,要使用它,您必須傳遞引數的系結,以便它能夠識別它,例如:
city='Petersburg'
varname='city'
varvalue=Eval.me('city', 'Petersburg', varname)
println(varvalue)?
但是傳遞引數系結可能與您要實作的目標相矛盾,因此您可以使用評估函式,該函式允許使用此腳本系結作為變數范圍對 groovy 運算式進行動態評估。就像是:
city='Petersburg'
varname='city'
varvalue=evaluate(varname)
println(varvalue)?
您還可以使用varvalue=evaluate varnamegroovy 允許在使用單個引數運行函式時省略括號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/390038.html
