Вот что мне нужно сделать:
- У меня есть URL-адрес, который мне нужно выполнить с помощью curl.
- Если статус равен 200, запишите ответ во временный файл.
- Теперь сравните этот временный файл с другим файлом
("/opt/proc/config/init.txt")
. - Если временный файл отличается, замените содержимое
init.txt
на этот временный файл. - Но если статус не равен 200, выйдите с ненулевым кодом статуса с сообщением.
Ниже приведено то, что я получил. Есть ли лучший или эффективный способ сделать это? Также можно ли все это сделать в одну строку, если это возможно?
URL="some_url"
# store the whole response with the status at the end
response=$(curl --silent --write-out "HTTPSTATUS:%{http_code}" -X POST $URL)
# extract the body
new="$(echo "$response" | sed -e 's/HTTPSTATUS\:.*//g')"
# extract the status
status=$(echo "$response" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
# print the body
echo "$new"
echo "$new" > /opt/proc/config/temp.txt
if [ "$status" -eq 200 ]; then
if ! cmp /opt/proc/config/init.txt /opt/proc/config/temp.txt > /dev/null 2>&1
then
echo different
mv /opt/proc/config/temp.txt /opt/proc/config/init.txt
else
echo same
fi
else
echo "Error [HTTP status: $status]"
rm /opt/proc/config/temp.txt
exit 1
fi