read é um shell embutido (não poderia definir uma variável de shell se não fosse).
Então, se o seu busybox sh for baseado em ash , é:
while IFS= read -r line <&3; do
printf '%s\n' "$line"
done 3< "$InputFile"
Como em qualquer shell POSIX. Mas, como acontece com qualquer shell, o uso de while read loops para processar texto é geralmente uma prática ruim de script de shell .
Acima, você precisa:
-
IFS=, caso contrário, os espaços e as guias sem escape e principais são removidos das linhas -
-r, caso contrário, as barras invertidas serão tratadas como um caractere de escape e removidas (a menos que tenham escapado) -
printf, nãoechoque não funcionaria para linhas que são, por exemplo,-nene -
"$line"entre aspas (não$line), caso contrário, o conteúdo da linha será dividido em espaços e tabulações e os padrões de distribuição serão expandidos. -
<&3e3< ..., se você precisar acessar o stdin original dentro do loop.
Se o arquivo contiver caracteres após a última linha e você quiser exibi-los, você poderá adicionar após o loop:
[ -z "$line" ] || printf %s "$line"
Observe que esse loop não pode manipular dados binários (o caractere NUL ).