Рейтинг:1

Как использовать коды состояния wget http в операторе if else для выполнения действия на основе кода состояния

флаг fk

Я пишу скрипт, который загружает кучу файлов, я использую wget для загрузки файла, и я хочу отобразить пользовательские сообщения о статусе терминала для каждого файла на основе 3 сценариев:

  1. Файлы успешно загружены (HTTP/1.1 200 OK)
  2. Файлы не изменились с локального (HTTP/1.1 304 Not Modified)
  3. Все остальное - неудачная загрузка

Я могу получить код состояния и использовать awk для выделения только номера кода состояния (200, 304 и т. д.) У меня есть следующее, чтобы вывести статус HTTP:

#!/бин/баш
wget -NS http://ipv4.download.thinkbroadband.com/5MB.zip 2>&1 | grep "HTTP/" | awk '{напечатать $2}'

если [$? = 200]; тогда
эхо "Файл загружен
"
если [$? = 304]; тогда
echo "Файл не изменен из локальной копии"
еще
    эхо "Что-то пошло не так"
    выход 1
фи

Но это просто выводит код состояния http обратно на терминал и всегда возвращает последний оператор else.

ноутбук:~$ ./test.sh
304
Что-то пошло не так

Как отправить вывод для запуска через оператор if else?

djdomi avatar
флаг za
обычно вы должны использовать elif, чтобы пройти один раз, иначе вы разорвете цепочку if else
Рейтинг:1
флаг jp

Вы печатаете код состояния HTTP в стандартный вывод, но ваш код сравнивает код возврата из wget, а не значение, выводимое на стандартный вывод. Если ошибки нет то wget возвращается 0.

corefile avatar
флаг fk
правильно - как я могу вывести код состояния HTTP на стандартный вывод и использовать в операторе if
Рейтинг:0
флаг ru

Ваш сценарий должен захватить вывод первой команды. Может быть более элегантный подход, но основная форма:

wget_result="$(wget -NS http://ipv4.download.thinkbroadband.com/5MB.zip 2>&1|grep "HTTP/"|awk '{print $2}')"

если [$wget_result = 200]; тогда
эхо "Файл загружен
"
если [$wget_result = 304]; тогда
echo "Файл не изменен из локальной копии"
еще
    эхо "Что-то пошло не так"
    выход 1
фи

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.