Tisk zdrojového kódu bash skriptu s jeho zahrnutím

Existuje způsob, jak zobrazit / zobrazit / vytisknout zdrojový kód bash skriptu s jeho zahrnutím (aka „zdroje“ „)?

Například:

soubor sub.sh

 function showMe(){ echo "INCLUDE" } 

soubor main.sh

#!/bin/bash source sub.sh showMe echo "OK" 

„Tisk“ main.sh zobrazí:

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

Komentáře

  • zdrojový kód lze zobrazit more/less/cat, za běhu můžete použít příznak -x (např. set -x). Neexistuje žádné takové kouzlo, které by staticky tisklo zdrojový kód tisku a přiložený soubor. Žádný ekvivalent cpp pro jazyk C.
  • Jak " vytisknete " z main.sh?

Odpověď

Můžete zkusit použít awk:

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

takže každý řádek začínající source fname by měl být nahrazen obsahem soubor, pokud existuje.

Odpověď

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

Komentáře

  • Funguje skvěle .. ale nemohu ' mimochodem použít perl.
  • dát echo "source foo.sh for the rescue" v foo.sh a získáte nekonečnou smyčku 🙂
  • @EvgenyVereshchagin, jste velmi krutí! 🙂

Odpovědět

Pokud vám také nevadí spuštění skriptu, je zde jednoduchý způsob, jak nechat zobrazovat zdrojový kód a jeho obsah:

bash -v foo.sh 

Komentáře

  • Tento příkaz také analyzuje skriptu, potřebuji jen zdroj, děkuji.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *