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]}
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
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]}
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).
Tags unix shell-script