Eu tenho um script Bash que acrescenta bytes escritos como valores hexadecimais. Eu uso echo
para escrever os bytes e funciona
hex="1F"
byte="\x$hex"
echo -en $byte >> "output.bin"
Em algum momento, preciso preencher o arquivo com um byte que pode ser qualquer coisa de 00
a FF
. Quero especificar o byte como um valor hexadecimal e o total de repetições.
Tentei fazer isso com um for
loop, mas demora muito, principalmente porque às vezes preciso adicionar algo como 65.535 bytes.
byte="00"
total=65515
for (( i=1; i<=total; i++ ));
do
echo -en "\x$byte" >> "output.bin"
done
Estou procurando uma maneira mais performática que não use um for
loop. No momento, estou preso com algo entre printf
e, echo
mas em vez de escrever os valores como binários, ele os escreve como texto
result=$(eval printf "\x$byte%0.s" {1..$total})
echo -en $result >> "output.bin"
O resultado no arquivo de saída é 78 30 30
, que é o texto "x00", em vez de 00
. Se eu usar echo -en "\x00" >> "output.bin"
, ele escreve um byte contendo o 00
valor e não o texto "x00". É aqui que não sei como proceder para fazê-lo escrever o valor binário real