2015-10-14 1 views
3

Мессинг вокруг с помощью простого AWS Cli запроса, чтобы проверить наличие функции лямбды и эха соответствующей роли, если она существует:JMESPath с переменным Башем

#!/bin/bash 

fname=$1 
role=$(aws lambda list-functions --query 'Functions[?FunctionName == `$fname`].Role' --output text) 

echo "$fname role: $role" 

Однако, $ имя_файл, как представляется, решение к пустой строке в команде aws. Я попытался ускользнуть от обратных тиков, заменив «на» и мириад других исправлений (и да, я передаю строку в cl при вызове скрипта :)

Как правильно передать переменную в запрос JMESPath внутри сценария bash?

ответ

8

Поскольку все выражение JMESPath заключено в одинарные кавычки, bash не расширяет переменную $fname. Чтобы исправить это, вы можете окружить значение в двойных кавычках, а затем использовать одиночные кавычки (raw string literals) для $fname вара:

aws lambda list-functions --query "Functions[?FunctionName == '$fname'].Role" --output text 
+0

идеально. благодаря! – TomH

0

переброса кавычки в одинарные кавычки, не работаю для меня ... :(

Но спасаясь кавычку работает :)

Вот мои результаты:

aws elbv2 describe-listeners --load-balancer-arn $ELB_ARN --query "Listeners[?Port == '$PORT'].DefaultActions[].TargetGroupArn | [0]" 

нуль

aws elbv2 describe-listeners --load-balancer-arn $ELB_ARN --query "Listeners[?Port == \`$PORT\`].DefaultActions[].TargetGroupArn | [0]" 

"ARN: AWS: elasticloadbalancing: ар-юго-восток-2: 1234567: targetgroup/ххх"

 Смежные вопросы

  • Нет связанных вопросов^_^