2012-03-12 193 views
0

在GNU讓你有一個數字的列表:填充數字

NUMBERS = 8 9 10 

你怎麼能墊他們前導零?

NUMBERS = 08 09 10 

回答

4

看來,製作(至少GNU MAKE)不具備的功能與這種類型的數據的處理好。你可以去野生和使用shell(只在Unix系統中):

NUMBERS = 8 9 10 
NUMBERS2=$(foreach v,$(NUMBERS),$(shell printf '%02d' $(v))) 
all: 
    echo $(NUMBERS2) 

會打印:

08 09 10 
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))