Bash curl 代理列表:删除 CRLF 行末尾的 CR
在 Bash 中逐行读取代理 URL,并在把值传给 curl 之前从 CRLF 文件中删除一个末尾 CR。
从 CRLF 文件复制来的行看起来像 proxy.example:8080,但变量实际上以回车符结尾。给变量加引号会保留该字符,而不会删除它。
对于每行一个完整代理 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。该条件也能处理没有换行符的最后一行非空内容。
IFS= 阻止 read 期间的字段拆分,-r 保留字面反斜杠。随后双引号把得到的 URL 作为单个 curl 参数传入。避免遍历命令替换的输出:shell 的单词拆分可能在 curl 看到之前改变文件的记录边界。
这只是规范化行尾。它不能修复错误的监听协议、缺失的端点或无法访问的服务。