有没有比获取 GNUmake
变量的第一个字符更好的方法
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(这不仅笨拙,而且还调用了外壳)?
有没有比获取 GNUmake
变量的第一个字符更好的方法
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(这不仅笨拙,而且还调用了外壳)?
这非常可怕,但至少它不会调用shell
:
$(eval REMAINDER := $$$(VAR)) # variable minus the first char
FIRST := $(subst $(REMAINDER),,$(VAR)) # variable minus that
GNU Make 标准库提供了一个substr
函数
子串
Arguments: 1: A string
2: Start offset (first character is 1)
3: Ending offset (inclusive)
Returns: Returns a substring
我没有测试过,但$(call substr,$(VARIABLE),1,1)
应该可以
由于我在自己的搜索中遇到了这个并且没有找到我正在寻找的内容,因此我最终使用它来解析可以应用于任何已知字符集的十六进制数字
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)))
然后
INPUT := 40b3
firstletter := $(call nextletter,,$(INPUT))
secondletter := $(call nextletter,$(firstletter),$(INPUT))
thirdletter := $(call nextletter,$(firstletter)$(secondletter),$(INPUT))
等等
它很丑,但它与外壳无关