Que tal:
unpack() {
tail +9 "$0" > /tmp/xxx.$$
chmod +x /tmp/xxx.$$
}
unpack
/tmp/xxx.$$ <add args here>
rm /tmp/xxx.$$
exit
<add the binary here>
Se você não gosta de ter dados binários no script, você pode codificá-lo e substituir cat
pelo decodificador relacionado.
Observe que você precisa substituir o +9
pelo número da linha em que o binário é iniciado, caso você modifique o script para ter comprimento diferente.
Se a implementação de tail
não der suporte ao argumento +9
, tente -n +9
.
Se você tem medo de estragar um arquivo / tmp existente, tente usar mktemp(1)
para criar o nome do arquivo tmp.
Note que este método foi usado pelos scripts de atualização para o conjunto de compiladores SunPro
que incluiu o arquivo tar compactado com toda a atualização e algum código shell para gerenciar o tratamento em torno disso.