Shell - 命令忽略额外的参数

时间:2014-01-22 10:39:24

标签: shell amazon-web-services amazon-ec2 aws-cli

我编写了一个shell脚本,通过http://checkip.amazonaws.com

中的curl获取我的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_group变量之后的所有内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

而不是减号,您键入了一个短划线(Unicode U + 2013)。因此,只需将–p替换为-p

我注意到your answer,你没有意识到这一点。这就是为什么它有效,而不是因为你把args放入var。

这就是错误消息中出现问号的原因:[ ?p, 22 ]