Druk de broncode van het bash-script af met zijn include

Is er een manier om de broncode van het bash-script met zijn include (ook wel “sources “)?

Bijvoorbeeld:

sub.sh-bestand

 function showMe(){ echo "INCLUDE" } 

main.sh-bestand

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

De “print” van main.sh toont:

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

Reacties

  • broncode kan worden gezien door more/less/cat, tijdens runtime kunt u de vlag -x gebruiken (bijv. set -x). Er is niet zon magie die de broncode en het bijgevoegde bestand statisch zal afdrukken. Geen equivalent van cpp voor C-taal.
  • Hoe " print " van main.sh?

Antwoord

Je kunt proberen :

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

dus elke regel die begint met source fname moet worden vervangen door de inhoud van bestand, indien aanwezig.

Antwoord

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

Reacties

  • Werkt prima .. maar ik kan ' niet perl gebruiken, trouwens bedankt.
  • zet echo "source foo.sh for the rescue" in foo.sh en je krijgt een oneindige lus 🙂
  • @EvgenyVereshchagin, je bent erg wreed! 🙂

Antwoord

Als je het niet erg vindt om het script ook uit te voeren, is hier een eenvoudige manier om de broncode en de inhoud ervan laten weergeven:

bash -v foo.sh 

Reacties

  • Deze opdracht ontleedt ook de script, ik heb alleen de bron nodig, bedankt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *