Bash: Use binário bruto na variável como executável?

2

Eu gostaria de criar uma variável contendo dados binários e, em seguida, executar em um comando. Exemplo:

#!/bin/bash
var="$(cat /bin/sleep)"
"$var" 9999
    
por user321517 18.11.2018 / 00:59

1 resposta

4

Você não pode executar uma variável assim porque:

  • o kernel executa arquivos,
  • o shell pode executar linhas de comando armazenadas em variáveis, mas não pode interpretar dados binários
  • armazenar o conteúdo de um arquivo binário em uma variável provavelmente não funcionará bem, porque os bytes nulos podem estar presentes no arquivo (e você não pode ter bytes nulos em variáveis da maioria dos shells)
  • mesmo se você usou a substituição de processo para obter um arquivo temporário com o conteúdo dessa variável, as alças do arquivo de substituição do processo não serão executáveis

Assim, você terá que armazenar o conteúdo em um arquivo, tornar esse arquivo executável, esperar que nada seja perdido devido a bytes nulos e executar esse arquivo.

    
por 18.11.2018 / 01:52