Există o modalitate de a vizualiza / afișa / tipări codul sursă al scriptului bash cu include-urile sale „)?
De exemplu:
fișier sub.sh
function showMe(){ echo "INCLUDE" }
fișier main.sh
#!/bin/bash source sub.sh showMe echo "OK"
„Print” din main.sh va afișa:
#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK"
Comentarii
Răspuns
Puteți încerca să urmați awk
:
awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh
deci fiecare linie care începe cu source fname
trebuie înlocuită cu conținutul de fișier dacă există.
Răspuns
perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh
Comentarii
- Funcționează excelent .. dar nu pot ' să folosesc perl, mulțumesc apropo.
- pune
echo "source foo.sh for the rescue"
înfoo.sh
și primești o buclă infinită 🙂 - @EvgenyVereshchagin, ești foarte crud! 🙂
Răspuns
Dacă nu vă deranjează să executați și scriptul, iată un mod simplu de a au codul sursă și include afișarea acestuia:
bash -v foo.sh
Comentarii
- Această comandă analizează și script, am nevoie doar de sursă, mulțumesc.
more/less/cat
, în timpul rulării puteți utiliza -x flag (de ex.set -x
). Nu există o astfel de magie care va imprima static codul sursă de imprimare și fișierul inclus. Nu există echivalent cucpp
pentru limbajul C.