Estou ambiciosamente tentando traduzir um código c ++ no bash por uma infinidade de razões.
Este código lê e manipula um tipo de arquivo específico para o meu subcampo que é escrito e estruturado completamente em binário. Minha primeira tarefa relacionada ao binário é copiar os primeiros 988 bytes do cabeçalho, exatamente como estão, e colocá-los em um arquivo de saída no qual eu possa continuar gravando enquanto gere o restante das informações.
Tenho certeza de que minha solução atual não está funcionando e, realisticamente, não descobri uma boa maneira de determinar isso. Portanto, mesmo que esteja realmente escrito corretamente, preciso saber como testaria isso para ter certeza!
Isto é o que estou fazendo agora:
hdr_988=`head -c 988 ${inputFile}`
echo -n "${hdr_988}" > ${output_hdr}
headInput=`head -c 988 ${inputTrack} | hexdump`
headOutput=`head -c 988 ${output_hdr} | hexdump`
if [ "${headInput}" != "${headOutput}" ]; then echo "output header was not written properly. exiting. please troubleshoot."; exit 1; fi
Se eu usar o hexdump / xxd para verificar esta parte do arquivo, embora não possa ler exatamente a maior parte, algo parece errado. E o código em que escrevi para comparação apenas me diz se duas strings são idênticas, não se elas são copiadas da maneira que eu quero que elas sejam.
Existe uma maneira melhor de fazer isso no bash? Posso simplesmente copiar / ler bytes binários no binário nativo, para copiar para um arquivo literalmente? (e, idealmente, para armazenar também como variáveis).
dd
para copiar bytes individuais (configurandocount
como1
). Eu não tenho certeza sobre armazená-los, no entanto.