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
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"
emfoo.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.
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 acpp
para linguagem C.