groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <mg...@arscreat.com>
Subject Re: Running a shell script with return value?
Date Wed, 30 May 2018 21:10:59 GMT
http://groovy-lang.org/syntax.html#all-strings


On 30.05.2018 21:38, Chris Fouts wrote:
> 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.Nelson@hdsupply.com <mailto:Erick.Nelson@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:%28858%29%20740-6523>
>
>     *From: *Chris Fouts <chrisfouts@ziftsolutions.com
>     <mailto:chrisfouts@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.Nelson@hdsupply.com <mailto:Erick.Nelson@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:%28858%29%20740-6523>
>
>         *From: *Chris Fouts <chrisfouts@ziftsolutions.com
>         <mailto:chrisfouts@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
>


Mime
View raw message