I think you need to do an "eval" or the equivalent to filepath in order to 
expand the inner variable. I believe the ssh command is executing "ls 
/srv/jboss/server/${MAL}/log/" but MAL on the far end is empty. So you need 
to complete the expansion before calling ssh. 

This might get you on the right track 
-- 
https://stackoverflow.com/questions/28997518/groovy-string-interpolation-with-value-only-known-at-runtime

On Thursday, October 22, 2020 at 12:14:06 PM UTC-4 cw wrote:

> I'm trying to set up a string parameter which will reference a variable 
> which will be created within the pipeline.  For instance, when building a 
> parameterized build, the user enters a file path in this 
> format: /srv/jboss/server/${MAL}/log/
>
> Where MAL is assigned via the pipeline and then I try to ls -ltr the fully 
> qualified path after MAL has been expanded.  However I'm not getting it to 
> expand; wondering what I'm doing wrong.
>
> node {
> MALarray = params.multi.split(',')
>
> MALarray.each { MAL ->
>          
> if (MAL in ['care''] )  {
>             servers = ['xx.xx.xx.xx','xx.xx.xx.xx']
>         }
>
> def soc_remote = [:]
> soc_remote.name = "${MAL} SOC"
> soc_remote.allowAnyHosts = true
>
> withCredentials([usernamePassword(credentialsId: 'Credentials', 
> usernameVariable: 'USER_ID', passwordVariable: 'USER_PASSWORD')]) {
> soc_remote.user = USER_ID
> soc_remote.password = USER_PASSWORD
> servers.each { server ->
>             soc_remote.host = server
> stage("Run script on ${server}") {
>     try {
>     echo("MAL is ${MAL}")
>     sshCommand remote: soc_remote, command: "ls -ltr ${filepath}"
>     } catch (err) {
>                           echo "something failed"
>                           echo "${err}"
>                           }
> }
> }
>         }
> }
> } 
>
> Console output:
> *11:59:34* MAL is care 
> *11:59:34* [Pipeline] sshCommand 
> <https://abaapvsc01amcba.tdbfg.com:9443/job/CraigTest/job/variable%20inside%20variable/2/console#>
>  
> *11:59:34* Executing command on care SOC[xx.xx.xx.xx]: ls -ltr 
> /srv/jboss/server/${MAL}/log/ sudo: false 
> *11:59:35* ls: cannot access /srv/jboss/server//log/: No such file or 
> directory 
> *11:59:35* Failed command care SOC#1002 with status 2: ls -ltr 
> /srv/jboss/server/${MAL}/log/  
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/5ddd0637-9663-4387-b7ea-178729c3b17bn%40googlegroups.com.

Reply via email to