comparação igual na variável jq

0

Eu tenho um script bash que executa uma solicitação de onda e gera o status via jq. Eu recebo o status como esperado, mas quando eu comparo o status, ele está sempre retornando valor "não-igual", mesmo que o valor seja igual (ou pareça).

Aqui está o script:

status=( $(curl -H "Content-Type: application/json" -H "Authorization: Basic xxx==" -H "Cache-Control: no-cache" --data-binary "@$entry" $2/$3/_bulk_docs --silent | jq '.[0].status'))
echo $status
if [ "$status" = "409" ]
    then
      echo "Conflict"
    else
      echo "No Conflict"
fi

E imprime 409 no console como eu esperava.

Estou executando isso em um PC Windows 10 com o Cygwin.

Obrigado por mais ajuda!

    
por MHogge 15.06.2017 / 15:49

1 resposta

5

Seus dados têm um retorno de carro no final:

$ status=$'409\r'
$ echo "<<$status>>"
>>409

Para removê-lo, use tr -d '\r' :

status=$( curl ... | jq ... | tr -d '\r' )

Observe também que não há necessidade de status ser uma variável de matriz, como no seu script, até onde eu posso ver.

    
por 15.06.2017 / 16:02