Er det en måte å se / vise / skrive ut kildekoden til bash-skript med dets inkluderer (aka «kilder «)?
For eksempel:
sub.sh-fil
function showMe(){ echo "INCLUDE" }
main.sh-fil
#!/bin/bash source sub.sh showMe echo "OK"
«Print» av main.sh vil vise:
#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK"
Kommentarer
Svar
Du kan prøve å følge awk
:
awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh
så hver linje som starter med source fname
skal erstattes med innholdet i fil hvis den eksisterer.
Svar
perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh
Kommentarer
- Fungerer bra .. men jeg kan ' t bruke perl, takk forresten.
- put
echo "source foo.sh for the rescue"
ifoo.sh
og du får en uendelig løkke 🙂 - @ EvgenyVereshchagin, du er veldig grusom! 🙂
Svar
Hvis du ikke har noe imot å utføre skriptet også, er det en enkel måte å har kildekoden og dens inkluderer vises:
bash -v foo.sh
Kommentarer
- Denne kommandoen analyserer også skript, jeg trenger bare kilden, takk.
more/less/cat
, på kjøretid kan du bruke -x flagg (f.eks.set -x
). Det er ingen slik magi som statisk vil skrive ut kildekoden og den inkluderte filen. Ingen tilsvarercpp
for C-språk.