ビジーボックスには読み取りアプレットは含まれていません。
busyboxを使用してtxtファイルを1行ずつ読み込む方法はありますか?
今私が持っているのは
while read line
do
echo $line
done < "$InputFile"
ベストアンサー1
read
シェル組み込み関数です(それ以外の場合はシェル変数を設定できません)。
したがって、あなたのbusyboxsh
がに基づいている場合は、ash
次のようになります。
while IFS= read -r line <&3; do
printf '%s\n' "$line"
done 3< "$InputFile"
POSIXシェルと同じです。しかし、他の殻と同様にループを使用してwhile read
テキストを処理することは、通常、悪いシェルスクリプトの実践です。。
上記では、以下が必要です。
IFS=
それ以外の場合は、エスケープされていない先行スペースと末尾のスペースとタブが行から削除されます。-r
それ以外の場合、バックスラッシュはエスケープ文字として処理され削除されます(エスケープされていない場合)。printf
echo
、例えば働かない代わりに-nene
"$line"
引用符で囲みます(いいえ$line
)。それ以外の場合、行の内容はスペースとタブに分割され、ワイルドカードパターンが展開されます。<&3
そして、3< ...
ループ内で生のstdinにアクセスする必要がある場合。
ファイルの最後の行の後に文字が含まれていて、それを表示したい場合は、ループの後に追加できます。
[ -z "$line" ] || printf %s "$line"
このループはバイナリデータ(NUL
文字)を処理できません。