Szukam sposobu na wywołanie JEDNEJ curl i uzyskanie z niego zmiennych: jednego z nagłówkami i drugiego z treścią odpowiedzi.Uzyskaj zarówno nagłówki, jak i treść odpowiedzi na curl w dwóch oddzielnych zmiennych?
Znalazłem kilka pytań z pytaniem o sposób rozdzielania nagłówków od treści, ale ludzie wydają się być zainteresowani tylko jednym z nich. Potrzebuję zarówno nagłówków, jak i ciała.
Nie mogę użyć zewnętrznego pliku do przechowywania ciała (dlatego użycie opcji -o $ nie jest opcją).
mogę używać
headers=$(curl -D /dev/stdout $URL)
uzyskać nagłówki do jednej zmiennej, ale w jaki sposób można przekierować wyjście do innej zmiennej?
Wielkie dzięki!
Starałem się, aby coś takiego działało, ale nie rozumiem, dlaczego "kot" nie czyta dalej od miejsca, w którym "sed" zostało przerwane: '{h = $ (sed '/^$/q '); b = $ (cat); } <<(curl -si $ url) ' – ooga
To dobre pytanie. Pamiętaj, że curl zwraca nagłówki z końcówkami wiersza '\ r \ n', więc'/^ $/'nie będzie oznaczać końca nagłówków, będziesz musiał użyć'/^ \ r $/'lub rozbierz powroty karetki, tak jak ja w mojej odpowiedzi. Ale nawet poprawiam to, nie wiem, dlaczego sed zjada wszystkie dane wejściowe po tym, jak powinien przestać. –
Chociaż 'sed' przetwarza swoje wejście tylko jedną linię na raz, to nie znaczy, że * czyta * tylko jedną linię na raz ze standardowego wejścia. Może odczytywać linie 'N', a inne' N-1' są buforowane, dopóki 'sed' nie zostanie wykonane pierwszym wierszem. Jeśli 'sed' wyjdzie przed przetworzeniem reszty bufora, wiersze te nie zostaną" przywrócone "do standardowego wejścia dla następnego polecenia (w tym przypadku' cat') do konsumpcji. – chepner