у меня есть конечная точка, которая возвращает JSON (тело ответа). Мне нужно получить curl тело ответа и обработать его (например, используя jq). Работает:
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
но мне также нужно показать код HTTP (чтобы показать, если запрос успешно):
curl -s -w "%{http_code}n" -o /dev/null https://swapi.co/api/people/1/?format=json
как получить тело ответа переменной и показать HTTP-код одновременно (один запрос)?
я узнаю решение ведьма временный файл:
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
как обойтись без создание файла?
Я пробую с именованной трубой (но ей еще надо создать файл на диске...):
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
но именованный канал не удаляется.
есть решение без создания какого-либо файла, например только ведьма переменных или потоков?