是否有更好的方法来获取GNU make
变量的第一个字符而不是
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(这不仅笨拙而且还调用外壳)?
答案 0 :(得分:8)
这非常可怕,但至少它没有调用shell
:
$(eval REMAINDER := $$$(VAR)) # variable minus the first char
FIRST := $(subst $(REMAINDER),,$(VAR)) # variable minus that
答案 1 :(得分:3)
GNU Make Standard Library提供了substr
功能
<强> 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)
应该可以使用
答案 2 :(得分:0)
因为我在自己的搜索中遇到了这个并且没有找到我在这里寻找的是我最终用来解析可以应用于任何已知字符集的十六进制数字
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))
等
它很难看,但它与shell无关