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
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"
ifoo.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.
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 tilcpp
for C-sprog.