Eu tenho endpoint que retorna JSON (corpo da resposta). Eu preciso obter curl o corpo de resposta e processá-lo (por exemplo, usando jq). Funciona:
response=$(curl -s https://swapi.co/api/people/1/?format=json)
name=$(echo $response tmpFile | jq '.name') # irrelevant command, but I need here response body
echo "name:"$name
Mas também preciso mostrar o código HTTP (para mostrar se a solicitação foi bem-sucedida):
curl -s -w "%{http_code}\n" -o /dev/null https://swapi.co/api/people/1/?format=json
Como obter o corpo da resposta para a variável e mostrar o código HTTP ao mesmo tempo (uma solicitação)?
Eu descobri o arquivo temporário da solução:
touch tmpFile
curl -s -w "%{http_code}\n" -o tmpFile https://swapi.co/api/people/1/?format=json
name=$(cat tmpFile | jq '.name') # irrelevant command, but I need here only body response
echo "name: "$name
rm tmpFile
Como fazer sem criar um arquivo?
Eu tento com pipe nomeado (mas ainda preciso criar um arquivo no disco ...):
mkfifo tmpFifo
curl -s -w "%{http_code}\n" -o tmpFifo https://swapi.co/api/people/1/?format=json
name=$(cat tmpFifo | jq '.name') # irrelevant command, but I need here only body response
echo "name: "$name
rm tmpFifo
Mas o pipe nomeado não está sendo removido.
Existe solução sem criar nenhum arquivo, por exemplo, apenas variáveis ou fluxos de bruxas?