Я хочу создать bash-скрипт, который считывает "полезную нагрузку" двоичных данных из внешнего файла и выплевывает другой bash-скрипт с экранированием и инкапсуляцией этих данных внутри строковой переменной. Пример:
- mydata.bin - исходные данные: двоичный файл данных для инкапсуляции
- myencoder.sh - главный исполнитель: bash-скрипт, который преобразует двоичные данные в скрипт со строковой переменной
- mypayload.sh - Конечный результат: сценарий bash, сгенерированный myencoder.sh, который содержит закодированные данные в виде строковой переменной.
Чтобы использовать это, я бы запустил myscript.sh mydata.bin mypayload.sh
и myscript.sh конвертировал /escape /wrap / любой файл mydata.bin в mypayload.sh
После выполнения этой команды файл mypayload.sh
будет выглядеть примерно так:
# Generated by myencoder.sh with data from mydata.bin
encoded_data="[...]ugly escaped string representation of the binary data found in mydata.bin[...]"
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как решить, как правильно закодировать данные. Я читал, что printf "% q" может быть использован для экранирования строк, но как вызвать его для данных, извлеченных из внешнего двоичного файла, полностью ускользнуло от меня.
Поэтому, пожалуйста, любые замечания по этому поводу и любые советы приветствуются!
PS: я не хочу вводить какие-либо зависимости вне bash, если это возможно. В зависимости от особенностей bash 4.x все в порядке.
PPS: кодирование должно поддерживать небольшой размер и производительность кодирования / декодирования.