S polem obsazeno nepřichází žádný aplet pro čtení.
Existuje nějaký způsob, jak číst soubor txt řádek po řádku pomocí busybox?
To, co teď mám, je
while read line
do
echo $line
done < "$InputFile"
Přijatá odpověď:
read
je vestavěný shell (nemohl by nastavit proměnnou shellu, kdyby tomu tak nebylo).
Pokud tedy váš busybox sh
je založen na ash
, je to:
while IFS= read -r line <&3; do
printf '%sn' "$line"
done 3< "$InputFile"
Jako v každém POSIX shellu. Ale jako u každého shellu, pomocí while read
smyčky ke zpracování textu je obecně špatná praxe skriptování v shellu.
Výše potřebujete:
IFS=
jinak jsou z řádků odstraněny úvodní a koncové mezery a tabulátory-r
, jinak jsou zpětná lomítka považována za znak escape a odstraněna (pokud nejsou uvozena)printf
, nikoliecho
což by nefungovalo pro řádky, které jsou například-nene
"$line"
v uvozovkách (nikoli$line
) jinak se obsah řádku rozdělí na mezery a tabulátory a rozšíří se kulovité vzory.<&3
a3< ...
, pokud potřebujete přístup k původnímu stdin v rámci smyčky.
Pokud soubor obsahuje znaky za posledním řádkem a chcete je zobrazit, můžete za smyčku přidat:
[ -z "$line" ] || printf %s "$line"
Všimněte si, že tato smyčka nemůže zpracovat binární data (NUL
postava).