Finns det ett sätt att visa / visa / skriva ut källkoden till bash-skript med dess inkluderar (aka ”källor ”)?
Till exempel:
sub.sh-fil
function showMe(){ echo "INCLUDE" }
main.sh-fil
#!/bin/bash source sub.sh showMe echo "OK"
”Print” av main.sh visar:
#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK"
Kommentarer
Svar
Du kan försöka följa awk
:
awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh
så varje rad som börjar med source fname
bör ersättas med innehållet i fil om den finns.
Svar
perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh
Kommentarer
- Fungerar bra .. men jag kan ' t använda perl, tack förresten.
- sätta
echo "source foo.sh for the rescue"
ifoo.sh
och du får en oändlig slinga 🙂 - @ EvgenyVereshchagin, du är väldigt grym! 🙂
Svar
Om du inte har något emot att utföra skriptet också, här är ett enkelt sätt att har källkoden och dess inkluderar visas:
bash -v foo.sh
Kommentarer
- Detta kommando analyserar också skript, jag behöver bara källan tack.
more/less/cat
, under körning kan du använda -x flagga (t.ex.set -x
). Det finns ingen sådan magi som statiskt skriver ut källkoden och den inkluderade filen. Ingen motsvarighet tillcpp
för C-språk.