Costumo gerar e registrar muitas funções bash que automatizam muitas das tarefas que normalmente faço nos meus projetos de desenvolvimento. Essa geração depende dos metadados do projeto em que estou trabalhando.
Quero anotar as funções com as informações do projeto que foram geradas, desta maneira:
func1() {
# This function was generated for project: PROJECT1
echo "do my automation"
}
Idealmente, eu seria capaz de ver o comentário ao inspecionar a definição:
$ type func1
func1 is a function
func1 ()
{
# This function was generated for project: PROJECT1
echo "do my automation"
}
Mas, de alguma forma, o bash parece ignorar os comentários no momento do carregamento da função, não ao executá-la. Então os comentários são perdidos e eu recebo este resultado:
func1 is a function
func1 ()
{
echo "do my automation"
}
Existe alguma maneira de atribuir metadados a funções e verificá-los depois? É possível recuperá-lo ao inspecionar a definição com o tipo?
$1
existe-h
e, em seguida,printf
/echo
uma ajuda / uso em uma linha / qualquer que seja.Respostas:
fonte
Sim,
type
parece imprimir apenas as partes de uma função que será executada. Isso me parece razoável, na verdade, já que geralmente é tudo o que você está interessado ao consultartype
.Como solução alternativa, em vez de usar comentários, adicione seus metadados como este:
Não há necessidade de realmente usar essa variável, mas ela aparecerá ao consultar a função com
type
:fonte
Você pode usar o nop embutido
:
. Além disso, você não precisa armazená-lo como uma variável:EDIT : Cuidado com caracteres especiais em seus metadados. Para texto puro, você pode usar:
EDIT : você pode usar uma matriz associativa global para armazenar todos os metadados da função:
Dessa forma, você não precisa analisar a saída
declare
outype
a saída, mas apenas consultar a chave de uma matriz.fonte
your metadata here
pode conter expansões com efeitos colaterais. Melhor usar aspas simples como a resposta de @ AlexP.Você consegue fazer isso.
fonte
(
pode ser usado e a primeira palavra não deve ser um comando válido.