ใช้while readวง:
: > another_file  ## Truncate file.
while IFS= read -r LINE; do
    command --option "$LINE" >> another_file
done < file
อีกวิธีหนึ่งคือเปลี่ยนเส้นทางผลลัพธ์โดยบล็อก:
while IFS= read -r LINE; do
    command --option "$LINE"
done < file > another_file
สุดท้ายคือการเปิดไฟล์:
exec 4> another_file
while IFS= read -r LINE; do
    command --option "$LINE" >&4
    echo xyz  ## Another optional command that sends output to stdout.
done < file
หากหนึ่งในคำสั่งอ่านอินพุตมันจะเป็นความคิดที่ดีที่จะใช้ FD อีกสำหรับการป้อนข้อมูลเพื่อให้คำสั่งที่จะไม่กินมัน (ที่นี่สมมติksh, zshหรือbashสำหรับ-u 3ใช้<&3แทน portably):
while IFS= read -ru 3 LINE; do
    ...
done 3< file
ในที่สุดก็ยอมรับข้อโต้แย้งคุณสามารถทำได้:
#!/bin/bash
FILE=$1
ANOTHER_FILE=$2
exec 4> "$ANOTHER_FILE"
while IFS= read -ru 3 LINE; do
    command --option "$LINE" >&4
done 3< "$FILE"
สิ่งที่สามารถเรียกใช้เป็น:
bash script.sh file another_file
แนวคิดเพิ่มเติม ด้วยการbashใช้readarray:
readarray -t LINES < "$FILE"
for LINE in "${LINES[@]}"; do
    ...
done
หมายเหตุ: IFS=สามารถตัดออกได้หากคุณไม่สนใจว่าจะต้องตัดค่าบรรทัดของช่องว่างนำหน้าและส่วนท้าย
               
              
<file xargs -L 1 -I{} command --option {} other args