Existe-t-il un moyen dafficher / afficher / imprimer le code source du script bash avec ses includes (aka « sources « )?
Par exemple:
fichier sub.sh
function showMe(){ echo "INCLUDE" }
fichier main.sh
#!/bin/bash source sub.sh showMe echo "OK"
Le « print » de main.sh affichera:
#!/bin/bash showMe(){ echo "INCLUDE" } showMe echo "OK"
Commentaires
Réponse
Vous pouvez essayer de suivre awk
:
awk "/^source/ { while (getline l <$2 > 0) print l; close($2); next; } { print; }" main.sh
donc chaque ligne commençant par source fname
doit être remplacée par le contenu de fichier sil existe.
Réponse
perl -p0e "while(s/source\s+(\S+)/`cat $1`/e){}" foo.sh
Commentaires
- Fonctionne très bien .. mais je ne peux ' utiliser perl, merci au fait.
- mettre
echo "source foo.sh for the rescue"
dansfoo.sh
et vous obtenez une boucle infinie 🙂 - @EvgenyVereshchagin, vous êtes très cruel! 🙂
Réponse
Si cela ne vous dérange pas dexécuter le script aussi, voici un moyen simple de afficher le code source et ses inclusions:
bash -v foo.sh
Commentaires
- Cette commande analyse également le script, je nai besoin que de la source, merci.
more/less/cat
, au moment de lexécution, vous pouvez utiliser lindicateur -x (par exempleset -x
). Il ny a pas une telle magie qui imprimera statiquement le code source dimpression et le fichier inclus. Aucun équivalent àcpp
pour le langage C.