قد يبدو السطر المنسوخ من ملف 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.

هذا يوحّد نهايات الأسطر. لكنه لا يصلح بروتوكول استماع خاطئًا، أو نقطة نهاية مفقودة، أو خدمة لا يمكن الوصول إليها.

مقالات ذات صلة