¿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
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"
enfoo.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.
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 acpp
para el lenguaje C.