Imprima el código fuente del script bash con sus inclusiones

¿Hay alguna forma de ver / mostrar / imprimir el código fuente del script bash con sus inclusiones (también conocidas como «fuentes «)?

Por ejemplo:

archivo sub.sh

 function showMe(){ echo "INCLUDE" } 

archivo main.sh

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

La «impresión» de main.sh mostrará:

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

Comentarios

  • more/less/cat puede ver el código fuente, en el tiempo de ejecución puede usar el indicador -x (por ejemplo, set -x). No existe tal magia que imprima estáticamente el código fuente de impresión y el archivo incluido. No hay equivalente a cpp para el lenguaje C.
  • ¿Cómo " imprime " de main.sh?

Responder

Puede intentar seguir awk:

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

por lo que cada línea que comienza con source fname debe reemplazarse con el contenido de archivo si existe.

Respuesta

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

Comentarios

  • Funciona muy bien … pero no puedo ' usar perl, gracias por cierto.
  • poner echo "source foo.sh for the rescue" en foo.sh y obtienes un bucle infinito 🙂
  • @EvgenyVereshchagin, ¡eres muy cruel! 🙂

Responder

Si no te importa ejecutar el script también, aquí tienes una forma sencilla de mostrar el código fuente y su inclusión:

bash -v foo.sh 

Comentarios

  • Este comando también analiza el script, solo necesito la fuente, gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *