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 ]