Skriv ut kildekode for bash-skript med dets inkluderer

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

  • kildekoden kan sees av 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 tilsvarer cpp for C-språk.
  • Hvordan skriver du " " av main.sh?

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" i foo.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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *