case $OP in +) RES=$((A + B)) ;; -) RES=$((A - B)) ;; *) echo "Error" ;;esac
9. Web (Curl) и Parsing (XML/HTML)
Curl — основные флаги
Флаг
Описание
-s
Silent. Не показывать прогресс-бар и мусор в консоли.
-L
Location. Следовать за перенаправлениями (если сайт кидает с http на https).
-o <file>
Output. Записать вывод в указанный файл.
-O
Сохранить файл под его оригинальным именем.
-I
Head. Скачать только заголовки (без тела HTML).
-w "%{http_code}"
Write. Вывести конкретную инфу (обычно код ответа).
Сценарии использования
# 1. Получить HTML-код страницы в переменную (для парсинга)CONTENT=$(curl -sL "https://example.com")# 2. Скачать файл и сохранить как data.xmlcurl -sL -o data.xml "https://cbr.ru/scripts/XML_daily.asp"# 3. Получить ТОЛЬКО код ответа (200, 404, 503) — для мониторинга# -o /dev/null выбрасывает html-код, остается только то, что в -wCODE=$(curl -s -o /dev/null -w "%{http_code}" "https://example.com")
Парсинг XML (Задача “Валютчик”)Вариант 1: Правильный (через xmllint)
# Извлечь курс (Value) для валюты с ID R01235 (USD)# "string(...)" убирает теги <Value>...</Value>curl -s "URL" | xmllint --xpath "string(//Valute[@ID='R01235']/Value)" -
Вариант 2: “Костыльный” (через grep/sed)
# -A 1 : взять строку совпадения + 1 строку ПОСЛЕ неёcurl -s "URL" | grep -A 1 "USD" | grep "Value" | sed 's/<[^>]*>//g'