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
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"
infoo.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.
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 vancpp
voor C-taal.