加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 使用groovy,你如何管道多个shell命令?

发布时间:2020-12-15 18:26:50 所属栏目:安全 来源:网络整理
导读:使用Groovy及其 java.lang.Process支持,如何将多个shell命令一起管道? 考虑这个bash命令(假设你的用户名是foo): ps aux | grep ' foo' | awk '{print $1}' 这将打印出用户名 – 与您的用户帐户相关的某些进程的一行. 使用Groovy,ProcessGroovyMethods文档
使用Groovy及其 java.lang.Process支持,如何将多个shell命令一起管道?

考虑这个bash命令(假设你的用户名是foo):

ps aux | grep ' foo' | awk '{print $1}'

这将打印出用户名 – 与您的用户帐户相关的某些进程的一行.

使用Groovy,ProcessGroovyMethods文档和代码说我应该能够做到这一点来实现相同的结果:

def p = "ps aux".execute() | "grep ' foo'".execute() | "awk '{print $1}'".execute()
p.waitFor()
println p.text

但是,我无法获得除此之外的任何文本输出:

def p = "ps aux".execute()
p.waitFor()
println p.text

一旦我开始配管,println就不会打印出任何东西.

思考?

这对我有用:
def p = 'ps aux'.execute() | 'grep foo'.execute() | ['awk','{ print $1 }'].execute()
p.waitFor()
println p.text

由于一个未知的原因,awk的参数不能只用一个字符串发送(我不知道为什么!也许bash引用不同的东西).如果使用命令转储错误流,则会看到相对于awk脚本编译的错误.

编辑:事实上,

>“ – string – ”.execute()委托给Runtime.getRuntime().exec(-string-)>使用’或’处理包含空格的参数是bash的工作.Runtime.exec或操作系统不知道引号>执行“grep’foo’”.execute()执行命令grep,其中’作为第一个参数,foo’作为第二个参数:它无效.同样的awk

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读