Ноль не является допустимым кодом ответа HTTP.
Если curl
не может установить sh HTTP-соединение с сервером, или если сервер (каким-то образом) не может доставить правильно сформированный Сообщение HTTP-ответа, в этой переменной не будет возврата «HTTP-код». В этом сценарии вы, вероятно, увидите ноль.
Также может быть, что значение $url
, которое вы используете, недействительно. Например, если URL-адрес заключен в символы <
и >
, он curl
его не поймет. Я бы ожидал, что и в этом случае будет ноль.
Проблема в том, что --silent
говорит curl
выбросить все сообщения об ошибках, поэтому он не может сказать вам, в чем проблема.
Я предлагаю вам увидеть, что вы получите, выполнив следующую команду:
curl -o /dev/null --head "$url"
со строкой URL, идентичной той, которую вы сейчас используете.