シェルスクリプト内にバイナリファイル埋め込んで、それをシェルから触る

cybozuのパッケージインストールシェル見てて知った。でも自分で使う機会なさそう。

例えば何かソースを圧縮したtar.gz を埋め込んでおいて、シェルを実行したら、そのtar.gzを展開して何か操作をする。

  • source.sh

この記述方法だとポイントはtailの行数。シェルスクリプトは9行で終わっているので、catで結合されるバイナリファイルは10行以降になるため、tail -n +10 $0 としている。

#!/bin/sh

tail -n +10 $0 | tar zxf - 
### tailでスクリプト末尾tar.gzを標準出力に出してtarで展開
### その後 sourceの中をほげほげする処理を書く
	
rm -rf source

exit 0

$ cat source.sh source.tar.gz > hoge.sh