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
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"
vfoo.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.
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ý ekvivalentcpp
pro jazyk C.