嗨,有人可以帮忙解决这个问题吗?
我在bash脚本中使用Amazon AWS CLI命令并具有以下行及其提供的输出。
aws ec2 describe-instances --instance-ids $Ins --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value]' --output text
' does not existd (InvalidInstanceID.NotFound) when calling the DescribeInstances operation:
The instance ID 'i-0c7bf4181bdfxxxxx Will be backed up
如果我回显$ ins的值并在命令中硬编码,如
$ echo $Ins
i-0c7bf4181bdfxxxxx
$ aws ec2 describe-instances --instance-ids i-0c7bf4181bdfxxxxx --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value]' --output text
lon-prod-xxxx-xxxx
我不理解为什么它在复制和粘贴时在命令中有效,但在用作变量时却不能?
附加代码,确定有更简洁的方法来做到这一点,但只是需要一些快速的东西。只需从单个VPC中获取所有实例ID,然后尝试依次获取每个实例ID。
Instances=$(aws ec2 describe-instances --filter "Name=vpc-id,Values=$VPCID" --query 'Reservations[*].Instances[*].[InstanceId]' --output text)
for Ins in $Instances; do
echo $Ins
name=$(aws ec2 describe-instances --instance-ids $Ins --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value]' --output text)
echo $name Will be backed up
echo $Ins
aws ec2 create-image --instance-id $Ins --name "$name" --description "Auto backed up on $(date)" --no-reboot --$dryrun
echo "***"
done
enter code here
错误在下面,第一个id是我回应$ Ins所以它似乎知道ID,但我认为它后面有一个/ r / n
i-0c7bf4181bdfxxxxx
' does not existd (InvalidInstanceID.NotFound) when calling the DescribeInstances operation:
The instance ID 'i-0c7bf4181bdfxxxxx Will be backed up
答案 0 :(得分:1)
好的我修好了,变量确实有一个新的行" / r"
添加了这一行
Ins = $ {Ins / $' \ r' /}将其剥离并立即正常工作。