I should have also mentioned that you don't need to even use evaluate if you don't want. I'd suggest using @Field in that case:
import groovy.transform.Field @Field zebra_test1_list = [ "zebra1", "zebra2" ] @Field zebra_test2_list = [ "zebra3", "zebra4" ] def zebras = (1..2).collect { this."zebra_${'test' + it}_list" } assert zebras == [['zebra1', 'zebra2'], ['zebra3', 'zebra4']] Cheers, Paul. On Thu, Mar 21, 2019 at 10:00 AM Paul King <pa...@asert.com.au> wrote: > You probably want to use the binding and just normal script evaluate rather > than > Eval.me which is designed for when you don't want the full binding. > > zebra_test1_list = [ 'zebra1', 'zebra2' ] > zebra_test2_list = [ 'zebra3', 'zebra4' ] > > def zebras = (1..2).collect { > evaluate("zebra_${'test' + it}_list") > } > > assert zebras == [['zebra1', 'zebra2'], > ['zebra3', 'zebra4']] > > Note that there is no def for the first two lines, otherwise > you are defining local variables which are normally visible > but not within the new context created when using evaluate. > > Cheers, Paul. > > > On Thu, Mar 21, 2019 at 8:23 AM Narahari Lakshminarayana < > itsme.narah...@gmail.com> wrote: > >> Friends: >> >> Thank you in advance for your help. >> >> I have the following groovyscript code. >> >> def zebra_test1_list = [ "zebra1", "zebra2" ] >> def zebra_test2_list = [ "zebra3", "zebra4" ] >> >> def data="test1" >> def zebra = groovy.util.Eval.me("zebra_${data}_list") >> >> println zebra >> >> >> I get the error >> >> groovy> def zebra_test1_list = [ "zebra1", "zebra2" ] >> groovy> def zebra_test2_list = [ "zebra3", "zebra4" ] >> groovy> def data="test1" >> groovy> def zebra = groovy.util.Eval.me("zebra_${data}_list") >> groovy> println zebra >> >> Exception thrown >> >> groovy.lang.MissingPropertyException: No such property: zebra_test1_list >> for class: Script1 >> at Script1.run(Script1.groovy:1) >> at ConsoleScript2.run(ConsoleScript2:5) >> >> >> Please help as to what I might be doing wrong. >> >> -N >> >