程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”?

开发过程中遇到使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”的问题如何解决?下面主要结合日常开发的经验,给出你关于使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”的解决方法建议,希望对你解决使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”有所启发或帮助;

我正在使用 jenkins 的 Active choice 参数来填充 RDS 实例类型列表

我是 groovy 的新手,并试图从 groovy 脚本中使用 sed 获取 aws cli 的值。

下面的代码工作正常,但是由于多个许可选项,它给出了重复的条目

def command = "aws rds describe-orderable-db-instance-options --ENGIne MysqL --ENGIne-version 8.0.20 --query OrderableDBInstanceOptions[*].DBInstanceClass --output text"
def proc = command.execute()
proc.waitFor()
def instances = proc.in.text.readlines()
return instances

要删除重复的条目,我厌倦了下面的代码,但它不会显示任何输出

第一次尝试

def command = "aws rds describe-orderable-db-instance-options --ENGIne MysqL --ENGIne-version 8.0.20 --query OrderableDBInstanceOptions[*].DBInstanceClass --output text | sed -e 'y/\t/\n/' | sort -u"
def proc = command.execute()
proc.waitFor()
def instances = proc.in.text.readlines()
return instances

第二次尝试

def command = """
aws rds describe-orderable-db-instance-options --ENGIne MysqL --ENGIne-version 8.0.20 --query OrderableDBInstanceOptions[*].DBInstanceClass --output text | sed -e 'y/\t/\n/' | sort -u
"""
def proc = ['bash','-c',command].execute()
proc.waitFor()
def instances = proc.in.text.readlines()
return instances

上面的代码给出了下面的错误

java.io.IOException: CAnnot run program "sh": CreateProcess error=2,The system cAnnot find the file specifIEd

    at ConsoleScript18.run(ConsoleScript18:9)

Caused by: java.io.IOException: CreateProcess error=2,The system cAnnot find the file specifIEd

第三次尝试

def  module = sh(script: """aws rds describe-orderable-db-instance-options --ENGIne MysqL --ENGIne-version 8.0.20 --query OrderableDBInstanceOptions[*].DBInstanceClass --output text | sed -e 'y/\t/\n/' | sort -u """,returnStdout: truE).trim()
echo "${modulE}"

给出以下错误

groovy.lang.MissingMethodException: No signature of method: ConsoleScript26.sh() is applicable for argument types: (linkedHashMap) values: [[script:aws rds describe-orderable-db-instance-options --ENGIne MysqL --ENGIne-version 8.0.20 --query OrderableDBInstanceOptions[*].DBInstanceClass --output text | sed -e 'y/  /
/' | sort -u,...]]
Possible solutions: is(java.lang.object),use([Ljava.lang.object;),NV([Ljava.lang.object;),run(),any()

我非常感谢这方面的帮助。

解决方法

在投入大量时间之后,我终于解决了这个问题。

首先,我尝试使用普通的 bash 实用程序(即 sed),因此删除重复项,但是很难与 groovy 一起使用。

因此使用 groovy 的 unique 功能将其删除

下面是我为 jenkin 的活动选择参数插件编写的工作代码。所以如果有人遇到这些问题,可以使用它。

def cmd = "aws rds describe-orderable-db-instance-options --ENGIne mysql --ENGIne-version 8.0.20 --query [OrderableDBInstanceOptions[*].DBInstanceClass] --output text"
def output = cmd.execute()
output.waitFor()
def error = output.err.text
def instances = output.text.tokenize().toUnique()
if (error) {
    return [error]
} else {
    return instances
}

大佬总结

以上是大佬教程为你收集整理的使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”全部内容,希望文章能够帮你解决使用“|”执行 aws 命令时,Groovy 中没有输出和“sed”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:aws命令时