Czy istnieje lepszy sposób, aby uzyskać pierwszą literę make
zmiennej GNU niżPobierz pierwszą literę zmiennej make
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(który jest nie tylko niewygodne, ale także wywołuje powłoka zewnętrzna)?
Czy istnieje lepszy sposób, aby uzyskać pierwszą literę make
zmiennej GNU niżPobierz pierwszą literę zmiennej make
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(który jest nie tylko niewygodne, ale także wywołuje powłoka zewnętrzna)?
Jest to dość straszne, ale przynajmniej nie powoływać shell
:
$(eval REMAINDER := $$$(VAR)) # variable minus the first char
FIRST := $(subst $(REMAINDER),,$(VAR)) # variable minus that
GNU Make Standard Library zapewnia substr
funkcja
substr
Arguments: 1: A string
2: Start offset (first character is 1)
3: Ending offset (inclusive)
Returns: Returns a substring
nie mam przetestowany, ale $(call substr,$(VARIABLE),1,1)
powinien działać
Uważam, że powinno to być '$ (wywołanie substr, $ (VARIABLE), 1,1)'. –
gmsl nie wydaje się działać dobrze z automake. Dostaję masę błędów dotyczących niedopasowania jeśli/else/endif, po prostu dodając linię 'include gmsl'. –
@CraigMcQueen, 1) Ups, dzięki, naprawione. 2) nie mogę ci pomóc, przepraszam –
Od natknąłem to w moim własnym poszukiwaniu i nie znaleźć to, czego szukasz tutaj jest to, co skończyło się używając do analizowania numer szesnastkowy, które mogą być stosowane do każdego znanego zestawu znaków
letters := 0 1 2 3 4 5 6 7 8 9 a b c d e f
nextletter = $(strip $(foreach v,$(letters),$(word 2,$(filter $(1)$(v)%,$(2)) $v)))
następnie
INPUT := 40b3
firstletter := $(call nextletter,,$(INPUT))
secondletter := $(call nextletter,$(firstletter),$(INPUT))
thirdletter := $(call nextletter,$(firstletter)$(secondletter),$(INPUT))
itp
jest brzydki, ale to powłoka agnostyk
GNU make nie ma wbudowanego w subst funkcja pierścienia, więc nie sądzę, że jest to łatwe lub oczywiste. Może mógłbyś wymyślić coś z '$ (patsubst)' ale nie byłem w stanie. – tripleee
Możliwy duplikat: http://stackoverflow.com/questions/3703881/how-to-return-first-character-of-a-variable-in-gmake –