当前位置:首页 > 开发 > 系统架构 > shell > 正文

Groovy执行脚本命令shell command

发表于: 2014-11-14   作者:darrenzhu   来源:转载   浏览次数:
摘要: 1): 直接执行一个字符串语句,executing a string A string can be executed in the standard java way: def command = """executable arg1 arg2 arg3"""// Create the String def proc = co

1): 直接执行一个字符串语句,executing a string

A string can be executed in the standard java way:
def command = """executable arg1 arg2 arg3"""// Create the String
def proc = command.execute()                 // Call *execute* on the string
proc.waitFor()                               // Wait for the command to finish

// Obtain status and output
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}" // *out* from the external program is *in* for groovy

Gotchas: Take care if you wish to pass a quoted argument that contains white space – it will be split into multiple arguments, e.g.:

"""executable "first with space" second""".execute()

will invoke executable with the following arguments:

  • arg1 = "first
  • arg2 = with
  • arg3 = space"
  • arg4 = second

In such a case, you may prefer to use one of the array or list of String variations, e.g.:

["executable", "first with space", "second"].execute()

2) Processing shell command with piping in groovy script, 在groovy 脚本中使用管道功能

def proc = "ffmpeg -i /tmp/sample.m4a -f ffmetadata 2>&1 | grep Duration".execute()

是不行的,the '2>1&1' bit is shell functionality, and Groovy processes don't invoke the shell, they just start a program. If you really need it, you should do something like:

 
def proc1 = ['/bin/bash', '-c', '/usr/local/bin/ffmpeg -i /tmp/sample.m4a -f ffmetadata 2>&1'].execute()
or similar - do some experimenting. That is, you need to call the shell with the command you want executed as argument.

3): using ant builder's exec task

Ant has an exec task and it be accessed from the AntBuilder object

def ant = new AntBuilder()   // create an antbuilder
ant.exec(outputproperty:"cmdOut",
             errorproperty: "cmdErr",
             resultproperty:"cmdExit",
             failonerror: "true",
             executable: '/opt/myExecutable') {
                             arg(line:"""*"first with space"* second""")
             }
println "return code: ${ant.project.properties.cmdExit}"
println "stderr: ${ant.project.properties.cmdErr}"
println "stdout: ${ ant.project.properties.cmdOut}"

Groovy执行脚本命令shell command

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
前言:   ssh命令, 没有指定密码的参数. 以至于在脚本中使用ssh命令的时候, 必须手动输入密码, 才
如果需要用Shell来执行Groovy脚本的话,可以用以下三个命令。 1.groovysh: 启动一个groovysh命令行sh
php利用root权限执行shell脚本(二) 分类: Linux php 2012-12-02 20:16 1334人阅读 评论(4) 收藏 举
这几天弄的东西涉及到php利用shell脚本与Linux的交互,我们知道利用php运行脚本来访问Linux是以Apac
Android执行shell命令 一、方法 /** * 执行一个shell命令,并返回字符串值 <span class="comment
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
第一部分:Linux命令行 《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell 《Linux命令
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号