利点

利点

私は実行可能なバイナリをスクリプトに直接リンクする方法を探しています。このような:

#!/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アーカイブと、アップグレード関連の処理を管理するためのいくつかのシェルコードを含むコンパイラスイートのアップグレードスクリプトで使用されます。

おすすめ記事