Es kommt kein Lese-Applet mit Busy-Box.
Gibt es eine Möglichkeit, eine txt-Datei Zeile für Zeile mit busybox zu lesen?
Was ich jetzt habe, ist
while read line
do
echo $line
done < "$InputFile"
Akzeptierte Antwort:
read
ist eine in die Shell eingebaute Shell (es könnte keine Shell-Variable setzen, wenn dies nicht der Fall wäre).
Also, wenn Ihre busybox sh
basiert auf ash
, es ist:
while IFS= read -r line <&3; do
printf '%sn' "$line"
done 3< "$InputFile"
Wie in jeder POSIX-Shell. Aber wie bei jeder Shell, verwenden Sie while read
Schleifen zum Verarbeiten von Text ist im Allgemeinen eine schlechte Shell-Scripting-Praxis.
Oben benötigen Sie:
IFS=
andernfalls werden führende und abschließende nicht maskierte Leerzeichen und Tabulatoren aus den Zeilen entfernt-r
, andernfalls werden umgekehrte Schrägstriche als Escape-Zeichen behandelt und entfernt (sofern nicht mit Escapezeichen versehen)printf
, nichtecho
was nicht für Zeilen funktionieren würde, die zum Beispiel-nene
sind"$line"
in Anführungszeichen (nicht$line
), andernfalls wird der Inhalt der Zeile auf Leerzeichen und Tabulatoren aufgeteilt und Globbing-Muster erweitert.<&3
und3< ...
, wenn Sie Zugriff auf die ursprüngliche stdin innerhalb der Schleife benötigen.
Wenn die Datei nach der letzten Zeile Zeichen enthält und Sie diese anzeigen möchten, können Sie nach der Schleife hinzufügen:
[ -z "$line" ] || printf %s "$line"
Beachten Sie, dass diese Schleife keine Binärdaten verarbeiten kann (die NUL
Zeichen).