Строка, скопированная из файла CRLF, может выглядеть как proxy.example:8080, хотя переменная на самом деле заканчивается символом возврата каретки. Заключение переменной в кавычки сохраняет этот символ; оно не удаляет его.

Для файла Bash, содержащего один полный URL прокси в строке:

target='https://api.example/'
while IFS= read -r proxy || [ -n "$proxy" ]; do
    proxy=${proxy%$'\r'}
    if [ -z "$proxy" ]; then
        continue
    fi
    curl --proxy "$proxy" --max-time 10 --url "$target"
done < ProxyList.txt

Используйте записи вроде http://proxy.example:8080; список HTTP-прокси даёт публичные адреса-кандидаты для такого форматирования. read удаляет разделитель новой строки; расширение суффикса удаляет один завершающий CR, если он есть. Условие также обрабатывает последнюю непустую строку без перевода строки.

IFS= предотвращает разбиение на поля во время read, а -r сохраняет буквальные обратные слэши. Затем двойные кавычки передают полученный URL как один аргумент curl. Избегайте перебора вывода подстановки команд: разбиение слов оболочкой может изменить границы записей файла до того, как curl их увидит.

Это нормализует окончания строк. Это не исправляет неверный протокол прослушивания, отсутствующую конечную точку или недоступный сервис.

Похожие статьи