Я ищу простую проверку оболочки (+ curl), которая будет оцениваться как true или false, если URL существует (возвращается 200) или нет.
Как проверить, существует ли URL-адрес с оболочкой и, возможно, завиток?
Ответ 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.