Expansão variável entre parênteses e citações

1

No script abaixo, não consigo fazer o $ var1 expandir na segunda instrução. Eu tentei $var1 , ${var1} , echo $var1 e '$var1' . É dentro de alguns conjuntos de citações e parênteses que eu acho que é o que está causando o problema. Alguma idéia?

#!/bin/bash

# Get the AutoScalingGroupName for the NameNode ASG
var1=$(aws cloudformation list-stack-resources --stack-name abc123 | jq '.StackResourceSummaries[] | select(.ResourceType=="AWS::AutoScaling::AutoScalingGroup")' | jq '.PhysicalResourceId' | tr -d '"' | grep nn); echo $var1

var2=$(aws autoscaling describe-auto-scaling-instances | jq -r '.AutoScalingInstances[] | select(.AutoScalingGroupName == "$var1") | select(.AvailabilityZone == "us-east-1a") .InstanceId'); echo $var2
    
por Sco 30.07.2015 / 02:37

2 respostas

5

Variáveis em aspas simples não são expandidas. Tente isso ...

var2=$(aws autoscaling describe-auto-scaling-instances | jq -r '.AutoScalingInstances[] | select(.AutoScalingGroupName == "'"$var1"'") | select(.AvailabilityZone == "us-east-1a") .InstanceId'); echo $var2
    
por 30.07.2015 / 02:42
0

Ele é encapsulado em aspas simples, por isso não pode ser expandido.

jq -r '.AutoScalingInstances[] | select(.AutoScalingGroupName == "$var1") ... .InstanceId'

A parte chave é o comando jq no qual você está passando apenas um único argumento para (observe a parte longa vermelho do comando). Então seus canos também não estão fazendo efeito. Você pode envolver de maneira seletiva as coisas entre aspas que realmente precisam ser.

    
por 30.07.2015 / 02:44