2014-01-22 51 views
-1

我寫了一個shell腳本,從http://checkip.amazonaws.com殼牌 - 命令忽略額外的參數

通過curl得到的我的IP地址是什麼我試圖做的就是我的所有安全組的列表,並添加IP地址通過AWS CLI向每個安全組發送消息。

劇本我至今是:

#!/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變量之後的所有內容。

任何想法?

回答

2

代替減號,您鍵入了一個連字符(Unicode U + 2013)。所以只需用-p代替–p即可。

我注意到your answer,你沒有意識到這點。這就是它工作的原因,並不是因爲你把參數放到var中。

這就是爲什麼在錯誤信息中有一個問號:[ ?p, 22 ]