Stampa il codice sorgente dello script bash con i suoi include

Cè un modo per vedere / mostrare / stampare il codice sorgente dello script bash con i suoi include (aka “sorgenti “)?

Ad esempio:

file sub.sh

 function showMe(){ echo "INCLUDE" } 

file main.sh

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

La “stampa” di main.sh mostrerà:

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

Commenti

  • codice sorgente può essere visto da more/less/cat, in fase di esecuzione puoi utilizzare il flag -x (ad es. set -x). Non esiste una tale magia che stamperà staticamente il codice sorgente di stampa e il file incluso. Nessun equivalente a cpp per il linguaggio C.
  • Come " stampa " di main.sh?

Risposta

Puoi provare a seguire awk:

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

quindi ogni riga che inizia con source fname deve essere sostituita con il contenuto di file se esiste.

Risposta

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

Commenti

  • Funziona benissimo .. ma non posso ' usare perl, grazie a proposito.
  • put echo "source foo.sh for the rescue" in foo.sh e ottieni un loop infinito 🙂
  • @EvgenyVereshchagin, sei molto crudele! 🙂

Risposta

Se non ti dispiace eseguire anche lo script, ecco un modo semplice per visualizzare il codice sorgente e i suoi inclusi:

bash -v foo.sh 

Commenti

  • Questo comando analizza anche il script, ho bisogno solo del sorgente, grazie.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *