Получить имя определения задачи для определения задачи ECS - PullRequest
0 голосов
/ 22 мая 2019

Я сталкиваюсь с проблемой, когда пытаюсь выполнить следующую команду:

aws ecs list-task-definitions | grep Foo-Task-Testing | awk -F '/' '{print $2}'

Это возвращает именно то, что я ищу, это просто имя определения задачи.

При запуске команды в CLI с помощью просто grep я получаю это:

        "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

У меня такое ощущение, что это связано с тем, как яЯ использую Awk в Groovy, но я не могу найти достаточно примеров в Интернете, чтобы подтвердить это.Кто-нибудь может предоставить способ сделать это в Groovy без использования Awk, или любой опытный программист Groovy может сказать мне правильный способ передачи Awk?

1 Ответ

1 голос
/ 23 мая 2019

Вы можете избежать необходимости awk с grep -o:

... | grep -o Foo-Task-Testing.*

возвращает

Foo-Task-Testing-TaskDefinition-OYBZ78KBUI57:1

(- o возвращает только совпадение, * жадно сопоставляет все после)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...