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
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"
infoo.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.
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 acpp
per il linguaggio C.