Skriv ut källkod för bash-skript med dess inkluderar

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

  • källkoden kan ses av 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 till cpp för C-språk.
  • Hur skriver du " " av main.sh?

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *