En linje kopieret fra en CRLF-fil kan se ud som proxy.example:8080, mens variablen i virkeligheden slutter med et carriage return. At sætte variablen i anførselstegn bevarer tegnet; det fjerner det ikke.

Til en Bash-fil med én komplet proxy-URL pr. linje:

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

Brug poster som http://proxy.example:8080; HTTP-proxylisten leverer offentlige adressekandidater, der kan formateres sådan. read fjerner linjeskiftstegnet; suffiksudvidelsen fjerner ét efterfølgende CR, hvis det findes. Betingelsen behandler også en sidste ikke-tom linje uden linjeskift.

IFS= forhindrer feltopdeling under read, og -r bevarer bogstavelige omvendte skråstreger. Derefter sender dobbelte anførselstegn den resulterende URL som ét curl-argument. Undgå at iterere over output fra kommando substitution: shell-ordopdeling kan ændre filens postgrænser, før curl ser dem.

Dette normaliserer linjeafslutninger. Det retter ikke en forkert lytteprotokol, et manglende endepunkt eller en utilgængelig tjeneste.

Relaterede artikler