私はプラグインシステム「edgemax機能ウィザード」を開発しています。プラグインtarballには3つのファイルしかありません:バックエンドとしてbashスクリプト、フロントエンドとしてHTMLファイル、フロントエンド入力検証用の検証.jsonファイルなので、なぜdebだけを入れないのか尋ねないでください。パッケージをtarballに入れてください - 無視されます。
この「ウィザード」を使用してdebパッケージを送信したいので、ファイルをBase64にエンコードし、bashスクリプトに入れてスクリプトの実行時に抽出できるようにする必要があります。これでこれを行う方法を知っていますが、base64部分をbashファイルにコピーして貼り付けてから、正しい場所に切り取り、貼り付ける方法で手動で実行します。これは、これらのパッケージを最新バージョンに更新すると不便です。
debファイルをbase64でエンコードしてbashスクリプトの65行に書き込むことはできますか?
私は読んだこの記事私は前に試しました
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
とI / Oリダイレクト:
{
sed -n '1,64p' wizard-run;
base64 package.deb;
sed -n '66,$p' wizard-run;
} > wizard-run.tmp && mv wizard-run.tmp wizard-run