Existem vários problemas com o seu código:
- em cada linha lida, você recria
somefile.txt, apagando, portanto, o que foi colocado na linha anterior. Provavelmente, você deve usar>> somefile.txtou mover> somefile.txtapós a palavra-chavedone. - parece que você está recebendo dados binários (de acordo com
xxddump), mas seu processo é como se fossem dados textuais separados por novas linhas. Com dados binários,readeechonão funcionam corretamente.
Por que não simplesmente passar o conteúdo de um descritor de arquivo para xxd e salvar o resultado em um arquivo? Ou seja apenas isso:
xxd -ps <&4 | sed 's/../&\ /g' > somefile.txt &