大佬教程收集整理的这篇文章主要介绍了使用“|”执行 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,请注明来意。