在GNU中,您有一个数字列表:
NUMBERS = 8 9 10
如何用前导零填充它们?
NUMBERS = 08 09 10
答案 0 :(得分:4)
似乎Make(至少GNU Make)没有处理这类数据的功能。你可以疯狂地使用shell(仅在unixes上):
NUMBERS = 8 9 10
NUMBERS2=$(foreach v,$(NUMBERS),$(shell printf '%02d' $(v)))
all:
echo $(NUMBERS2)
将打印:
08 09 10
答案 1 :(得分:2)
如果每个数字都不是太大,您可以按如下方式实现:
__seq = $(foreach i,$(seq1),$(addprefix $i,$1))
seq1 := 0 1 2 3 4 5 6 7 8 9
seq2 := $(call __seq,$(seq1))
seq3 := $(call __seq,$(seq2))
# Args:
# 1. Padding (1, 2, or 3)
# 2. Numbers
pad = $(strip \
$(foreach n,$2, \
$(if $(subst 0,,$n), \
$(word $n,$(wordlist 2,$(words $(seq$1)),$(seq$1))), \
$(firstword $(seq$1)))))
NUMBERS := 8 9 10
all:
echo $(call pad,2,$(NUMBERS))