Erro ao exportar o resultado de um comando válido como uma variável bash

1

Estou tentando exportar o resultado de uma linha de comando como uma variável de ambiente. Aqui está como eu estou fazendo isso:

group_id=$(aws ec2 describe-security-groups --filters Name=group-name,Values=${group_name} \
  | jq '.["SecurityGroups"][0].GroupId' \
  | sed -e 's/^"//'  -e 's/"$//'
)

No entanto, quando executo o arquivo bash, recebo o seguinte erro:

Error parsing parameter '--filters': Expected: '=', received: 'EOF' for input:

 ^

O comando é válido, pois funciona quando eu o tento diretamente da linha de comando. Quando eu uso set -exv no topo deste arquivo bash, recebo o conteúdo do arquivo:

+ case $1 in
+ init
aws ec2 describe-security-groups --filters Name=group-name,Values=${group_name} \
++ aws ec2 describe-security-groups --filters Name=group-name,Values=docker-networking ' '

Error parsing parameter '--filters': Expected: '=', received: 'EOF' for input:

 ^
+ group_id=

Alguma ideia de porque estou recebendo esse erro?

    
por bachr 30.11.2015 / 12:32

1 resposta

1

Parece haver um espaço após a barra invertida. Para criar comandos de múltiplas linhas, a barra invertida deve ser o último caractere em uma linha.

deduzido da saída de set -xv :

++ aws ec2 describe-security-groups --filters Name=group-name,Values=docker-networking ' '
                                                                              here ->  ~~~
    
por 30.11.2015 / 14:51