我遇到了一个问题,我试图运行以下命令:
aws ecs list-task-definitions | grep Foo-Task-Testing | awk -F '/' '{print $2}'
这正是我正在寻找的内容,这只是任务定义名称。
仅使用 grep 在 CLI 中运行命令时,我得到以下信息:
"arn:aws:ecs:us-east-1:xxxxxxxxxx:task-definition/Foo-Task-Testing-TaskDefinition-OYBZ78KBUI57:1",
当包括 awk 时,我得到:
Foo-Task-Testing-TaskDefinition-OYBZ78KBUI57:1"
但是,当我尝试将其添加到我的 Jenkins 管道时:
ecsTaskDefinitionName = Foo-Task-Testing
ecsTaskDefinition = sh(returnStdout: true, script: "aws ecs list-task-definitions | grep $ecsTaskDefinitionName | awk -F '/' '{print \$2}'").trim()
我总是收到此错误消息:
/home/jenkins/workspace/foo_test_PR-828@tmp/durable-a5ce4670/script.sh: 1: /home/jenkins/workspace/foo_test_PR-828@tmp/durable-a5ce4670/script.sh: Syntax error: Unterminated quoted string
我有一种感觉,这与我在 Groovy 中使用 Awk 的方式有关,但我似乎无法在网上找到足够的示例来确认这一点。任何人都可以提供一种在 Groovy 中使用 Awk 执行此操作的方法,或者任何有经验的 Groovy 程序员都可以告诉我传递 Awk 的正确方法吗?
您可以避免使用awk
with grep -o
:
... | grep -o Foo-Task-Testing.*
返回
Foo-Task-Testing-TaskDefinition-OYBZ78KBUI57:1
(-o 只返回匹配,.* 贪婪地匹配之后的所有内容)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句