No hay ningún subprograma de lectura que venga con la casilla ocupada.
¿Hay alguna forma de leer un archivo txt línea por línea usando el cuadro ocupado?
Lo que tengo ahora es
while read line
do
echo $line
done < "$InputFile"
Respuesta aceptada:
read
es un shell incorporado (no podría establecer una variable de shell si no lo fuera).
Entonces, si tu busybox sh
se basa en ash
, es:
while IFS= read -r line <&3; do
printf '%sn' "$line"
done 3< "$InputFile"
Como en cualquier shell POSIX. Pero como con cualquier shell, usar while read
los bucles para procesar texto son generalmente una mala práctica de scripting de shell.
Arriba, necesitas:
IFS=
de lo contrario, los espacios sin escape y las tabulaciones iniciales y finales se eliminan de las líneas-r
, de lo contrario, las barras invertidas se tratan como un carácter de escape y se eliminan (a menos que se escapen)printf
, noecho
que no funcionaría para líneas que son, por ejemplo,-nene
"$line"
citado (no$line
) de lo contrario, el contenido de la línea se divide en espacios y tabulaciones, y se expanden los patrones globales.<&3
y3< ...
, si necesita acceder a la entrada estándar original dentro del ciclo.
Si el archivo contiene caracteres después de la última línea y desea mostrarlos, puede agregar después del bucle:
[ -z "$line" ] || printf %s "$line"
Tenga en cuenta que ese ciclo no puede manejar datos binarios (el NUL
personaje).