You might want to not use dollar slashy and use just slashy or ‘’’ as dollar slashy interpolates….or …. Just escape the dollar sign in your shell script with a \
Erick Nelson Senior Developer – IT HD Supply Facilities Maintenance (858) 740-6523 From: Chris Fouts <chrisfo...@ziftsolutions.com> Reply-To: "users@groovy.apache.org" <users@groovy.apache.org> Date: Wednesday, May 30, 2018 at 12:38 PM To: "users@groovy.apache.org" <users@groovy.apache.org> Subject: Re: Running a shell script with return value? Thanks. Here's the complete code snippet #!/usr/bin/env groovy String cmd = $/ IFS=" " read -ra LINE <<< `ls -al | grep Music` echo ${LINE[4]} /$ StringBuilder outstr = new StringBuilder() StringBuilder errstr = new StringBuilder() Process proc = cmd.execute() proc.waitForProcessOutput(outstr, errstr) println $output When I run it, I get Caught: groovy.lang.MissingPropertyException: No such property: LINE for class: file groovy.lang.MissingPropertyException: No such property: LINE for class: file at file.run(file.groovy:5) On Wed, May 30, 2018 at 2:59 PM Nelson, Erick <erick.nel...@hdsupply.com<mailto:erick.nel...@hdsupply.com>> wrote: I mistyped It is … $/ /$ Similar to ''' ''' They are known as “dollar slashy strings” Erick Nelson Senior Developer – IT HD Supply Facilities Maintenance (858) 740-6523<tel:(858)%20740-6523> From: Chris Fouts <chrisfo...@ziftsolutions.com<mailto:chrisfo...@ziftsolutions.com>> Reply-To: "users@groovy.apache.org<mailto:users@groovy.apache.org>" <users@groovy.apache.org<mailto:users@groovy.apache.org>> Date: Wednesday, May 30, 2018 at 11:55 AM To: "users@groovy.apache.org<mailto:users@groovy.apache.org>" <users@groovy.apache.org<mailto:users@groovy.apache.org>> Subject: Re: Running a shell script with return value? Thanks. Do the /$ designate a begin/end fo the commands I want to execute? So using my example, I do String cmd = /$ IFS=" " read -ra LINE <<< `ls -al | grep some_file` echo ${LINE[4]} /$ On Wed, May 30, 2018 at 2:20 PM Nelson, Erick <erick.nel...@hdsupply.com<mailto:erick.nel...@hdsupply.com>> wrote: String cmd = /$ What you want to shell out and execute here Remember, java shells out as sh, not bash or your shell of choice /$ // output and error can be any class that implements Appendable StringBuilder output = new StringBuilder() StringBuilder error = new StringBuilder () Process proc = cmd.execute() proc.waitForProcessOutput(output, error) println proc.exitValue() Erick Nelson Senior Developer – IT HD Supply Facilities Maintenance (858) 740-6523<tel:(858)%20740-6523> From: Chris Fouts <chrisfo...@ziftsolutions.com<mailto:chrisfo...@ziftsolutions.com>> Reply-To: "users@groovy.apache.org<mailto:users@groovy.apache.org>" <users@groovy.apache.org<mailto:users@groovy.apache.org>> Date: Wednesday, May 30, 2018 at 10:58 AM To: "users@groovy.apache.org<mailto:users@groovy.apache.org>" <users@groovy.apache.org<mailto:users@groovy.apache.org>> Subject: Running a shell script with return value? Inside groovy, I want to write a shell script that parses the output of some shell command and get some string value back. How can I get the value of the shell command? For example say I want to get the file size of some_file, I'll do x = sh returnStatus: true, script: ''' IFS=" " read -ra LINE <<< `ls -al | grep some_file` echo ${LINE[4]} ''' How can I store the value of ${LINE[4]} in a groovy variable to use later? Thanks, Chris