Как проверить, существует ли URL-адрес с оболочкой и, возможно, завиток? - программирование
Подтвердить что ты не робот

Как проверить, существует ли URL-адрес с оболочкой и, возможно, завиток?

Я ищу простую проверку оболочки (+ curl), которая будет оцениваться как true или false, если URL существует (возвращается 200) или нет.

4b9b3361

Ответ 1

Использование --fail сделает статус выхода ненулевым при неудачном запросе. Использование --head позволит избежать загрузки содержимого файла, поскольку для этой проверки он не нужен. Использование --silent позволит избежать состояния или ошибок при испускании самой проверки.

if curl --output /dev/null --silent --head --fail "$url"; then
  echo "URL exists: $url"
else
  echo "URL does not exist: $url"
fi

Если ваш сервер отказывается от запросов HEAD, альтернативой является запрос только первого байта файла:

if curl --output /dev/null --silent --fail -r 0-0 "$url"; then

Ответ 2

Я нахожу wget лучшим инструментом для этого, чем CURL; есть меньше вариантов для запоминания, и вы действительно можете проверить его значение истинности в bash, чтобы убедиться, что оно выполнено успешно или нет по умолчанию.

if wget --spider http://google.com 2>/dev/null; then
  echo "File exists"
else
  echo "File does not exist"
fi

Опция --spider заставляет wget просто проверять файл, а не загружать его, и 2> /dev/null отключает вывод wget stderr.