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 <[email protected]> Reply-To: "[email protected]" <[email protected]> Date: Wednesday, May 30, 2018 at 12:38 PM To: "[email protected]" <[email protected]> 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 <[email protected]<mailto:[email protected]>> 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 <[email protected]<mailto:[email protected]>> Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Date: Wednesday, May 30, 2018 at 11:55 AM To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> 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 <[email protected]<mailto:[email protected]>> 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 <[email protected]<mailto:[email protected]>> Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Date: Wednesday, May 30, 2018 at 10:58 AM To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> 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
