Shell-忽略额外参数的命令

Shell-忽略额外参数的命令,shell,amazon-web-services,amazon-ec2,aws-cli,Shell,Amazon Web Services,Amazon Ec2,Aws Cli,我已经编写了一个shell脚本,通过curlfrom获取我的IP地址 我试图做的是获取所有安全组的列表,并通过AWS CLI将该IP地址添加到每个安全组 到目前为止,我的剧本是: #!/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" ec

我已经编写了一个shell脚本,通过
curl
from获取我的IP地址

我试图做的是获取所有安全组的列表,并通过AWS CLI将该IP地址添加到每个安全组

到目前为止,我的剧本是:

#!/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\u group
变量之后的所有内容


有什么想法吗?

您键入的不是减号,而是一个破折号(Unicode U+2013)。因此,只需将
-p
替换为
-p

我注意到,你在不知不觉中解决了这个问题。这就是它工作的原因,不是因为您将args放入var

这就是为什么在错误消息中有一个问号:
[?p,22]