Синтаксис сценария оболочки, экранирующий символ - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть сценарий оболочки, как указано ниже. Этот скрипт на самом деле добавляет AWS экземпляр в автоматическом масштабе в группе защиты. Когда я запускаю отдельные команды, все прошло нормально. Но когда я создал файл оболочки и попытался выполнить то же самое, возникает ошибка. Смотри ниже скрипт

set -x
INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
ASG_NAME=$(aws ec2 describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID"  --region us-east-2 | jq '.Tags[] | select(.["Key"] | contains("a:autoscaling:groupName")) | .Value')
ASG_NAME=$(echo $ASG_NAME | tr -d '"')
aws autoscaling set-instance-protection --instance-ids $INSTANCE_ID --auto-scaling-group-name $ASG_NAME  --protected-from-scale-in --region us-east-2

ошибка как указано ниже. Я думаю, что проблема со второй строкой. Невозможно получить ASG_NAME, я пробовал какой-то символ экранирования, но ничего не работает.

+++ wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
++ INSTANCE_ID=i-----
+++ aws ec2 describe-tags --filters Name=resource-id,Values=i------ --region us-east-2
+++ jq '.Tags[] | select(.["Key"] | contains("a:autoscaling:groupName")) | .Value'
++ ASG_NAME=
+++ echo
+++ tr -d '"'
++ ASG_NAME=
++ aws autoscaling set-instance-protection --instance-ids i---- --auto-scaling-group-name --protected-from-scale-in --region us-east-2
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: argument --auto-scaling-group-name: expected one argument

> Blockquote

1 Ответ

0 голосов
/ 26 февраля 2020

Решена проблема по рекомендации @chepner. Изменена вторая строка

ASG_NAME=$(aws ec2 describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID"  --region us-east-2 --query 'Tags[1].Value')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...