Imprimir o código-fonte do script bash com seus includes

Existe uma maneira de ver / mostrar / imprimir o código-fonte do script bash com seus includes (também conhecido como “fontes “)?

Por exemplo:

arquivo sub.sh

 function showMe(){ echo "INCLUDE" } 

arquivo main.sh

#!/bin/bash source sub.sh showMe echo "OK" 

O “print” de main.sh mostrará:

#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK" 

Comentários

  • o código-fonte pode ser visto por more/less/cat, em tempo de execução você pode usar o sinalizador -x (por exemplo, set -x). Não existe uma mágica que imprima estaticamente o código-fonte de impressão e o arquivo incluído. Não há equivalente a cpp para linguagem C.
  • Como você " imprime " de main.sh?

Resposta

Você pode tentar seguir awk:

awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh 

então cada linha que começa com source fname deve ser substituída pelo conteúdo de se existir.

Resposta

perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh 

Comentários

  • Funciona muito bem .. mas eu não posso ' usar perl, obrigado. A propósito.
  • coloque echo "source foo.sh for the rescue" em foo.sh e você obtém um loop infinito 🙂
  • @EvgenyVereshchagin, você é muito cruel! 🙂

Resposta

Se você não se importa em executar o script também, aqui está uma maneira simples de ter o código-fonte e seus inclusos sendo exibidos:

bash -v foo.sh 

Comentários

  • Este comando também analisa o script, preciso apenas do código-fonte, obrigado.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *