Gunakan while readloop:
: > another_file ## Truncate file.
while IFS= read -r LINE; do
command --option "$LINE" >> another_file
done < file
Lain adalah untuk mengarahkan output dengan blokir:
while IFS= read -r LINE; do
command --option "$LINE"
done < file > another_file
Terakhir adalah membuka 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
Jika salah satu dari perintah membaca masukan, itu akan menjadi ide yang baik untuk menggunakan fd lain untuk input sehingga perintah tidak akan memakannya (di sini dengan asumsi ksh, zshatau bashuntuk -u 3, penggunaan <&3bukan portable):
while IFS= read -ru 3 LINE; do
...
done 3< file
Akhirnya untuk menerima argumen, Anda dapat melakukan:
#!/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"
Yang mana bisa dijalankan sebagai:
bash script.sh file another_file
Ide ekstra. Dengan bash, gunakan readarray:
readarray -t LINES < "$FILE"
for LINE in "${LINES[@]}"; do
...
done
Catatan: IFS=dapat dihilangkan jika Anda tidak keberatan memiliki nilai garis yang dipangkas dari spasi awal dan akhir.
<file xargs -L 1 -I{} command --option {} other args