Wiersz skopiowany z pliku CRLF może wyglądać jak proxy.example:8080, choć zmienna w rzeczywistości kończy się znakiem powrotu karetki. Ujęcie zmiennej w cudzysłowie zachowuje ten znak; nie usuwa go.

Dla pliku Bash zawierającego jeden pełny adres URL proxy w wierszu:

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

Używaj wpisów takich jak http://proxy.example:8080; lista proxy HTTP dostarcza publiczne adresy-kandydatów do takiego formatowania. read usuwa separator nowego wiersza; rozwinięcie sufiksu usuwa jeden końcowy CR, jeśli występuje. Warunek obsługuje też ostatni niepusty wiersz bez nowego wiersza.

IFS= zapobiega dzieleniu pól podczas read, a -r zachowuje dosłowne ukośniki wsteczne. Następnie podwójne cudzysłowy przekazują wynikowy adres URL jako jeden argument curl. Unikaj iterowania po wyniku podstawienia poleceń: dzielenie słów przez powłokę może zmienić granice rekordów pliku, zanim curl je zobaczy.

To normalizuje końce wierszy. Nie naprawia błędnego protokołu nasłuchiwania, brakującego punktu końcowego ani nieosiągalnej usługi.

Powiązane artykuły