私は実行可能なバイナリをスクリプトに直接リンクする方法を探しています。このような:
#!/bin/bash
...some shell code
execute binary:
>>>
binary
code
...
<<<
...some more shell code possibly
見つけました。このソリューション、使用してuuencode
良いです。しかし、状況によって異なりますshrutils
。私のDebianにはデフォルトでは含まれていないので、これは追加の項目のようです。
base64
バイナリをエンコードしてからデコードすることについて考えてきました。何とか実行すると、一時ファイルは生成されません。私は何かをする図書館があったことを覚えていますが、それが何であるかを忘れました。
次のような簡単な構成を持つ方が良いでしょう。
$ <(base64 out | base64 -d)
bash: /dev/fd/63: Permission denied
ベストアンサー1
どうですか?
unpack() {
tail +9 "$0" > /tmp/xxx.$$
chmod +x /tmp/xxx.$$
}
unpack
/tmp/xxx.$$ <add args here>
rm /tmp/xxx.$$
exit
<add the binary here>
スクリプトのバイナリデータが気に入らない場合は、それをエンコードしてcat
関連デコーダに置き換えることができます。
+9
スクリプトを別の長さに変更する場合は、行番号をバイナリファイルの先頭に置き換える必要があります。
tail
実装がこのパラメータをサポートしていない場合は、代わりに+9
試してみてください-n +9
。
既存の/ tmpファイルが破損しているのではないかと心配している場合mktemp(1)
。
SunPro
この方法は、フルアップグレードを含む圧縮されたtarアーカイブと、アップグレード関連の処理を管理するためのいくつかのシェルコードを含むコンパイラスイートのアップグレードスクリプトで使用されます。