Shell - Команда, игнорирующая дополнительные параметры

Я написал сценарий оболочки, который получает мой IP-адрес через curl с http://checkip.amazonaws.com/

Я пытаюсь получить список всех моих групп безопасности и добавить этот IP-адрес в каждую группу безопасности через интерфейс командной строки AWS.

Сценарий, который у меня пока есть:

#!/bin/bash

# Get IP Address
IP_ADDR="`curl http://checkip.amazonaws.com`"
IP_ADDR="$IP_ADDR/32"

cat /dev/null > /tmp/ec2.info

tmpFile="/tmp/ec2.info"

ec2Info=`ec2-describe-group --region eu-west-1 > $tmpFile`

sec_groups=`cat $tmpFile | grep GROUP | cut -f4`

echo "You are using IP Address:  $IP_ADDR"
echo ""

for security_group in $sec_groups
do

     echo ""
     echo $security_group
     echo ""

     ec2-authorize --region eu-west-1 $security_group –p 22 -s $IP_ADDR

done

Скрипт работает нормально, получая IP-адрес и список моих групп безопасности. Тем не менее, я получаю проблему, когда скрипт попадает в ec2-authorize линия.

Я получаю сообщение об ошибке:

WARNING:  Ignoring extra parameter(s): [ ?p, 22 ]
Required option '-p, --port-range PORT-RANGE' missing (-h for usage)

Как вы можете видеть из сценария, я добавил -p параметр, указывающий порт. Кажется, что игнорирует все после $security_group переменная.

Есть идеи?

1 ответ

Вместо знака минус вы набрали черту (Unicode U+2013). Так что просто замени –p с -p,

Я заметил в вашем ответе, вы исправили это, не осознавая этого. Вот почему это работает, а не потому, что вы помещаете аргументы в переменную.

И вот почему в сообщении об ошибке был знак вопроса: [ ?p, 22 ]

Другие вопросы по тегам