บรรทัดที่คัดลอกมาจากไฟล์ CRLF อาจดูเหมือน proxy.example:8080 แต่ตัวแปรจริง ๆ ลงท้ายด้วยอักขระ carriage return การใส่เครื่องหมายคำพูดรอบตัวแปรจะเก็บอักขระนั้นไว้ ไม่ได้ลบมันออก

สำหรับไฟล์ 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 จะเห็น

สิ่งนี้ทำให้การลงท้ายบรรทัดเป็นมาตรฐาน แต่ไม่ได้แก้โปรโตคอลการรับฟังที่ผิด จุดปลายทางที่หายไป หรือบริการที่เข้าถึงไม่ได้

บทความที่เกี่ยวข้อง