Imprimer le code source du script bash avec ses includes

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

  • le code source peut être vu par more/less/cat, au moment de lexécution, vous pouvez utiliser lindicateur -x (par exemple set -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.
  • Comment " imprimer " de main.sh?

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" dans foo.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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *