Je génère et enregistre souvent un grand nombre de fonctions bash qui automatisent la plupart des tâches que je fais habituellement dans mes projets de développement. Cette génération dépend des métadonnées du projet sur lequel je travaille.
Je veux annoter les fonctions avec les informations du projet qu'elles ont été générées, de cette façon:
func1() {
# This function was generated for project: PROJECT1
echo "do my automation"
}
Idéalement, je serais en mesure de voir le commentaire lorsque j'inspecterai la définition:
$ type func1
func1 is a function
func1 ()
{
# This function was generated for project: PROJECT1
echo "do my automation"
}
Mais bash semble ignorer les commentaires au moment du chargement de la fonction, pas lors de son exécution. Donc les commentaires sont perdus et j'obtiens ce résultat:
func1 is a function
func1 ()
{
echo "do my automation"
}
Existe-t-il un moyen d'affecter des métadonnées à des fonctions et de les vérifier ensuite? Il est possible de le récupérer lors de l'inspection de la définition avec le type?
$1
c'est le cas-h
, puisprintf
/echo
une aide / utilisation / sur une ligne.Réponses:
la source
Oui,
type
semble imprimer uniquement les parties d'une fonction qui seront exécutées. Cela me semble vraiment raisonnable, car c'est généralement tout ce qui vous intéresse lorsque vous interrogeztype
.Pour contourner le problème, au lieu d'utiliser des commentaires, ajoutez vos métadonnées comme ceci:
Il n'est pas nécessaire d'utiliser réellement cette variable, mais elle apparaîtra lors de l'interrogation de la fonction avec
type
:la source
Vous pouvez utiliser le nop builtin
:
. De plus, vous n'avez pas besoin de le stocker en tant que variable:EDIT : Méfiez-vous des caractères spéciaux dans vos métadonnées. Pour du texte pur, vous pouvez utiliser:
EDIT : Vous pouvez utiliser à la place un tableau associatif global pour stocker toutes les métadonnées de la fonction:
De cette façon, vous n'avez pas besoin d'analyser
declare
outype
« de la sortie, mais seulement pour la requête clé d'un tableau.la source
your metadata here
pourrait contenir des extensions qui ont des effets secondaires. Mieux vaut utiliser des guillemets simples comme la réponse de @ AlexP.Tu peux le faire.
la source
(
ne peut être utilisé et le premier mot ne doit pas être une commande valide.