Tôi có điểm cuối trả về JSON (phần thân phản hồi). Tôi cần có được bằng cách cuộn cơ thể phản hồi và xử lý nó (ví dụ như sử dụng jq). Nó hoạt động:
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
Nhưng tôi cũng cần hiển thị Mã HTTP (để hiển thị nếu yêu cầu thành công):
curl -s -w "%{http_code}\n" -o /dev/null https://swapi.co/api/people/1/?format=json
Làm cách nào để phần thân phản hồi biến và hiển thị mã HTTP cùng một lúc (một yêu cầu)?
Tôi tìm ra giải pháp tạm thời phù thủy tập tin:
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
Làm thế nào để làm mà không tạo tập tin?
Tôi thử với tên ống (nhưng nó vẫn cần tạo tệp trên đĩa ...):
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
Nhưng ống tên là không loại bỏ.
Có giải pháp mà không tạo bất kỳ tập tin nào, ví dụ chỉ có biến phù thủy hoặc luồng?