Как сохранить тело ответа из cURL в файле при выполнении команды в цикле в bash-скрипте? - PullRequest
1 голос
/ 27 июня 2019

Я создал скрипт bash cURL, в котором я хочу сохранить тело ответа в файл с именем output.log , но когда я открываю файл output.log, он выглядит так:

screenshot of the output.log file showing a line for the Header Code, a line for the execution date and HTTP/1.1 for the Response Body

Вот мой bash-скрипт:

#!/bin/bash
SECRET_KEY='helloWorld'
FILE_NAME='sma.txt'

function save_log()
{

    printf '%s\n' \
    "Header Code    : $1" \
    "Executed at    : $(date)" \
    "Response Body  : $2" \
    '==========================================================\n'  > output.log
}

while IFS= read -r line; 
    do 
        HTTP_RESPONSE=$(curl -I -L -s -w "HTTPSTATUS:%{http_code}\\n" -H "X-Gitlab-Event: Push Hook" -H 'X-Gitlab-Token: '$SECRET_KEY --insecure $line 2>&1)
        HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')

        save_log $HTTP_STATUS $HTTP_RESPONSE
done < $FILE_NAME

Может ли кто-нибудь помочь мне получить желаемый результат в моем файле output.log?

1 Ответ

2 голосов
/ 27 июня 2019

Из документации Curl: -I, --head Показать только информацию о документе. Удаление -I или замена его на -i должно решить вашу проблему

...