Tidak ada applet baca yang datang dengan kotak sibuk.
Apakah ada cara untuk membaca file txt baris demi baris menggunakan busybox?
Yang saya miliki sekarang adalah
while read line
do
echo $line
done < "$InputFile"
Jawaban yang Diterima:
read
adalah shell builtin (tidak dapat mengatur variabel shell jika tidak).
Jadi, jika busybox Anda sh
didasarkan pada ash
, ini:
while IFS= read -r line <&3; do
printf '%sn' "$line"
done 3< "$InputFile"
Seperti di shell POSIX mana pun. Tetapi seperti halnya shell apa pun, menggunakan while read
loop untuk memproses teks umumnya merupakan praktik skrip shell yang buruk.
Di atas, Anda membutuhkan:
IFS=
jika tidak, spasi dan tab awal dan akhir yang tidak lolos akan dihapus dari garis-r
, jika tidak, garis miring terbalik diperlakukan sebagai karakter escape dan dihapus (kecuali jika diloloskan)printf
, bukanecho
yang tidak akan berfungsi untuk baris yang misalnya-nene
"$line"
dikutip (bukan$line
) jika tidak, konten baris akan dibagi menjadi spasi dan tab, dan pola globbing diperluas.<&3
dan3< ...
, jika Anda memerlukan akses ke stdin asli dalam loop.
Jika file berisi karakter setelah baris terakhir dan Anda ingin menampilkannya, Anda dapat menambahkannya setelah loop:
[ -z "$line" ] || printf %s "$line"
Perhatikan bahwa loop tersebut tidak dapat menangani data biner (NUL
karakter).