CURL usado no shell

1

Estou executando um script de shell no qual um comando curl está presente. Eu tenho que armazenar a saída do comando curl (formato xml) em um arquivo e exibir o resultado na tela. Para que isso aconteça, "tee command" é usado após o curl usando pipeline. Eu preciso verificar se o comando curl está executando com sucesso ou não. Eu usei $? mas está tomando o status de saída do comando tee. Eu usei PIPESTATUS [0] e set -o pipefail mas não funcionou para enrolar. Como faço para verificar se o comando curl está sendo executado com sucesso ou não? Como faço para armazenar o status de saída do comando curl em uma variável? Este é apenas um código de demonstração.

curl output | tee -a filename

Eu quero saber o status de saída do curl

    
por samfisher 30.05.2014 / 14:10

2 respostas

1

Use o var de $ PIPESTATUS que é uma matriz. A seguir, você receberá o código de retorno do comando canalizado.

curl output | tee -a filename
echo ${PIPESTATUS[0]}
    
por 30.05.2014 / 14:15
0

Você pode usar a seguinte construção:

content='curl http://www.google.com'
if [[ $? -ne 0 ]]; then 
  # do some fail stuff
else
  echo '$content' | tee /tmp/output.file
fi

Ele armazena a saída de curl em uma variável, depois verifica o status de saída e, se for bem-sucedido, tee a saída para um arquivo (e stdout).

    
por 30.05.2014 / 14:14