Il n'y a pas d'applet de lecture avec la boîte occupée.
Existe-t-il un moyen de lire un fichier txt ligne par ligne à l'aide de busybox ?
Ce que j'ai maintenant est
while read line
do
echo $line
done < "$InputFile"
Réponse acceptée :
read
est un shell intégré (il ne pourrait pas définir une variable shell si ce n'était pas le cas).
Donc, si votre busybox sh
est basé sur ash
, c'est :
while IFS= read -r line <&3; do
printf '%sn' "$line"
done 3< "$InputFile"
Comme dans n'importe quel shell POSIX. Mais comme avec n'importe quel shell, en utilisant while read
boucles pour traiter le texte est généralement une mauvaise pratique de script shell.
Ci-dessus, vous avez besoin :
IFS=
sinon, les espaces non échappés et les tabulations de début et de fin sont supprimés des lignes-r
, sinon les barres obliques inverses sont traitées comme un caractère d'échappement et supprimées (sauf si elles sont échappées)printf
, pasecho
qui ne fonctionnerait pas pour les lignes qui sont par exemple-nene
"$line"
entre guillemets (et non$line
) sinon le contenu de la ligne est divisé en espaces et en tabulations, et les modèles de globalisation sont développés.<&3
et3< ...
, si vous avez besoin d'accéder au stdin d'origine dans la boucle.
Si le fichier contient des caractères après la dernière ligne et que vous souhaitez les afficher, vous pouvez ajouter après la boucle :
[ -z "$line" ] || printf %s "$line"
Notez que cette boucle ne peut pas gérer les données binaires (le NUL
caractère).