A menudo genero y registro muchas funciones bash que automatizan muchas de las tareas que suelo realizar en mis proyectos de desarrollo. Esa generación depende de los metadatos del proyecto en el que estoy trabajando.
Quiero anotar las funciones con la información del proyecto que se generaron, de esta manera:
func1() {
# This function was generated for project: PROJECT1
echo "do my automation"
}
Idealmente, podría ver el comentario cuando inspeccione la definición:
$ type func1
func1 is a function
func1 ()
{
# This function was generated for project: PROJECT1
echo "do my automation"
}
Pero de alguna manera bash parece ignorar los comentarios en el momento de cargar la función, no al ejecutarla. Entonces los comentarios se pierden y obtengo este resultado:
func1 is a function
func1 ()
{
echo "do my automation"
}
¿Hay alguna forma de asignar metadatos a las funciones y verificarlas después? ¿Es posible recuperarlo al inspeccionar la definición con tipo?
$1
es así-h
, y luegoprintf
/echo
una línea de ayuda / uso / lo que sea.Respuestas:
fuente
Sí,
type
parece que solo imprime las partes de una función que se ejecutará. Esto me parece razonable, realmente, ya que generalmente eso es todo lo que le interesa cuando realiza consultastype
.Como solución alternativa, en lugar de usar comentarios, agregue sus metadatos de esta manera:
No hay necesidad de usar esa variable, pero aparecerá al consultar la función con
type
:fuente
Puedes usar el nop incorporado
:
. Además, no necesita almacenarlo como una variable:EDITAR : tenga cuidado con los caracteres especiales en sus metadatos. Para texto puro, puede usar:
EDITAR : en su lugar, puede usar una matriz asociativa global para almacenar todos los metadatos de la función:
De esta manera, no es necesario para analizar
declare
otype
salida 's, pero sólo consulta para la clave de una matriz.fuente
your metadata here
podría contener expansiones que tienen efectos secundarios. Es mejor usar comillas simples como la respuesta de @ AlexP.Puedes hacerlo.
fuente
(
se pueden usar caracteres especiales como y la primera palabra no debe ser un comando válido.