[英]AWK Print $2 Breaking Bash Args
我正在嘗試使用AWK捕獲EC2命令的輸出。 AWK部分起作用,而EC2命令起作用。 問題是,我將參數傳遞給腳本,其中之一與AWK的樣式沖突。 具體print $2
正確的細分是
cmd="/opt/aws/bin/ec2-run-instances -O $secid -W $seckey $ami -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk '/^INSTANCE/ {print $2}'
如您所見,我需要打印$ 2來捕獲EC2實例ID。 有沒有不更改我的arg格式的解決方法?
謝謝!
RESERVATION r-****** ******** www.abc.com
INSTANCE i-**** ami-*****
我相信您只需要為awk對其進行轉義,以使shell不會替換$1
, $2
等,請注意以下幾點:
awk '/^INSTANCE/ {print \$2}'
或您的CMD變量:
cmd="/opt/aws/bin/ec2-run-instances -O $secid -W $seckey $ami -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk '/^INSTANCE/ {print \$2}'"
result=$(/opt/aws/bin/ec2-run-instances -O $secid -W $seckey $ami -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk '/^INSTANCE/ {print $2}')
for instance_id in $result; do echo $instance_id; done
嘗試這樣的事情:
cmd="/opt/aws/bin/ec2-run-instances -O $secid -W $seckey $ami -n $1 -g $secg -k $sshkey -t $instsize -z $2 | awk -v var=$2 '/^INSTANCE/ {print var}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.