Często generuję i rejestruję wiele funkcji bash, które automatyzują wiele zadań, które zwykle wykonuję w swoich projektach programistycznych. To generowanie zależy od metadanych projektu, nad którym pracuję.
Chcę opisać funkcje informacjami o projekcie, który zostały wygenerowane, w ten sposób:
func1() {
# This function was generated for project: PROJECT1
echo "do my automation"
}
Idealnie byłoby zobaczyć komentarz, gdy sprawdzę definicję:
$ type func1
func1 is a function
func1 ()
{
# This function was generated for project: PROJECT1
echo "do my automation"
}
Ale bash wydaje się ignorować komentarze w momencie ładowania funkcji, a nie podczas jej wykonywania. Komentarze są zgubione i otrzymuję ten wynik:
func1 is a function
func1 ()
{
echo "do my automation"
}
Czy jest jakiś sposób przypisania metadanych do funkcji i sprawdzenia ich później? Czy można je odzyskać podczas sprawdzania definicji typu?
$1
jest-h
, a następnieprintf
/ pomocecho
w jednym wierszu / użycie / cokolwiek.Odpowiedzi:
źródło
Tak,
type
wydaje się , że drukuje tylko te części funkcji, które zostaną uruchomione. Wydaje mi się to rozsądne, ponieważ zazwyczaj to wszystko, czym jesteś zainteresowany, kiedy pytasztype
.Aby obejść ten problem, zamiast używać komentarzy, dodaj swoje metadane w następujący sposób:
Nie ma potrzeby używania tej zmiennej, ale pojawi się ona podczas zapytania funkcji za pomocą
type
:źródło
Możesz użyć wbudowanego nop
:
. Poza tym nie musisz przechowywać go jako zmiennej:EDYCJA : Uważaj na znaki specjalne w swoich metadanych. Do czystego tekstu możesz użyć:
EDYCJA : Zamiast tego możesz użyć globalnej tablicy asocjacyjnej do przechowywania metadanych wszystkich funkcji:
W ten sposób nie musisz analizować
declare
anitype
generować danych wyjściowych, a jedynie zapytać o klucz tablicy.źródło
your metadata here
może zawierać rozszerzenia, które mają skutki uboczne. Lepiej używać pojedynczych cytatów, takich jak odpowiedź @ AlexP.Możesz to zrobić.
źródło
(
można używać żadnych znaków specjalnych, a pierwsze słowo nie powinno być prawidłowym poleceniem.