Udskriv kildekode for bash-script med dets inkluderer

Er der en måde at se / vise / udskrive kildekoden til bash-script 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” af main.sh viser:

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

Kommentarer

  • kildekode kan ses af more/less/cat, ved kørselstidspunktet kan du bruge -x flag (f.eks. set -x). Der er ikke sådan en magi, der statisk udskriver udskrivningskildekode og inkluderet fil. Intet svarende til cpp for C-sprog.
  • Hvordan udskriver du " " af main.sh?

Svar

Du kan prøve at følge awk:

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

så hver linje, der starter med source fname, skal erstattes med indholdet af fil, hvis den findes.

Svar

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

Kommentarer

  • Fungerer godt .. men jeg kan ' t bruge perl, tak forresten.
  • put echo "source foo.sh for the rescue" i foo.sh, og du får en uendelig løkke 🙂
  • @ EvgenyVereshchagin, du er meget grusom! 🙂

Svar

Hvis du ikke har noget imod at udføre scriptet også, er her en enkel måde at have kildekoden, og dens inkluderer vises:

bash -v foo.sh 

Kommentarer

  • Denne kommando analyserer også script, jeg har kun brug for kilden, tak.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *