Imprimați codul sursă al scriptului bash cu include

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

  • codul sursă poate fi văzut de 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 cu cpp pentru limbajul C.
  • Cum " tipăriți " of main.sh?

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" în foo.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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *