bash: как записать содержимое в кодировке base64 в файл в указанной строке

bash: как записать содержимое в кодировке base64 в файл в указанной строке

Я работаю над "edgemax feature-wizard", что является своего рода системой плагинов. В tarball плагина разрешено только три файла: скрипт bash как бэкэнд, файл HTML как фронтэнд и файл validation.json для проверки ввода с фронтэнда, так что, пожалуйста, не спрашивайте, почему я просто не помещаю deb-пакеты в tarball — они игнорируются.

Я хочу отправлять deb-пакеты с этим "мастером", поэтому мне нужно закодировать файлы в base64 и поместить их в скрипт bash для извлечения при запуске скрипта. Теперь я знаю, как все это сделать, но я делаю это вручную, копируя-вставляя часть base64 в файл bash, а затем вырезая-вставляя в нужное место, что неудобно при обновлении этих пакетов до последней версии.

Можно ли закодировать deb-файлы в base64 и записать их в строку 65 скрипта bash?

я прочелЭта статьяи я попробовал

sed -i "65i\\$(base64 package.deb)" wizard-run

но который жалуется на:

bash: /bin/sed: Argument list too long

Вот мой код; часть base64 должна быть заключена в двойные кавычки из оператора echo:

if [ $arch == 'mips' ]; then
    # base64: olsrd_0.9.0.3-1_mips.deb
    echo "
    <base64encoded-pkg>
    " | base64 -d > $cfgusrdir/olsrd_0.9.0.3-1_mips.deb
    # base64: olsrd-plugins_0.9.0.3-1_mips.deb
    echo "
    <base64encoded-pkg>
    " | base64 -d > $cfgusrdir/olsrd-plugins_0.9.0.3-1_mips.deb
fi

решение1

Использование sedи перенаправление ввода-вывода:

{
  sed -n '1,64p' wizard-run;
  base64 package.deb;
  sed -n '66,$p' wizard-run;
} > wizard-run.tmp && mv wizard-run.tmp wizard-run

Связанный контент