Crear script con datos embebidos

2019/01/21

Hay veces que es útil generar un script que contenga datos embebidos, por ejemplo un archivo tar, para usar como instalador.

Para crear el script instalador se necesita:

La creación se realiza utilizando cat:

$ cat script-HEADER payload > script

Para utilizar los datos (payload) en script-HEADER se debe utilizar un código similar al siguiente:

#!/bin/bash
...

# unpack payload
FILE=$(mktemp -u)
finish() {
    rm -f $FILE
}
trap finish EXIT
ARCHIVE=$(awk '/^__ARCHIVE__/ { print NR + 1; exit 0; }' "${0}")
tail -n+${ARCHIVE} "${0}" > $FILE

...

exit 0
__ARCHIVE__

IMPORTANTE: Las lineas

exit 0
__ARCHIVE__

deben ser las últimas del script.