CRLF ファイルからコピーした行は proxy.example:8080 のように見えても、変数の実際の末尾には復帰文字が残っています。変数を引用符で囲んでもその文字は保持されるだけで、削除はされません。

1 行に 1 つの完全なプロキシ URL が入った Bash ファイルの場合:

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 があれば 1 つ削除します。この条件は改行で終わらない最後の非空行も処理します。

IFS= は read 中のフィールド分割を防ぎ、-r はバックスラッシュをそのまま保持します。その後、二重引用符で得られた URL を 1 つの curl 引数として渡します。コマンド置換の出力を反復処理するのは避けてください。シェルの単語分割が、curl が読む前にファイルのレコード境界を変えてしまう可能性があります。

これは行末を正規化するだけです。誤った待ち受けプロトコル、存在しないエンドポイント、到達できないサービスは修正しません。

関連記事