我敢肯定,提问者在 3 年后继续前进,但如果其他人对此感兴趣,这里是一种模块化的方式来完成任务 w/make。
hasA = $(findstring A,$(1))
lastN = $(shell echo -n $(1) | tail -c $(2))
firstN = $(shell echo -n $(1) | head -c $(2))
smack0 = $(1)0$(2)
AFormat = $(call smack0,$(call firstN,$(1),4),$(call lastN,$(1),5))
myFormat = $(if $(call hasA,$(1)),$(call AFormat,$(1)),$(1))
func9 = $(call myFormat,$(call lastN,$(1),9))
# AFormat = smack0 (firstN (string,4),lastN (string,5))
# myFormat = hasA (string) ? AFormat (string) : string
# func9 = myFormat (last9 (string))
test:
@echo hasA "(1234B66547) ->" $(call hasA,1234B66547)
@echo lastN "(RosieODonnellSuperManVelociraptor123456789,9) ->" $(call lastN ,RosieODonnellSuperManVelociraptor123456789,9)
@echo smack0 "(1234,0,ABCD) ->" $(call smack0,1234,ABCD)
@echo func9 "(S12a1234A5678 ) ->" $(call func9,S12a1234A5678)
@echo func9 "(S123a1234A5678) ->" $(call func9,S123a1234A5678)
@echo func9 "(S123123456789 ) ->" $(call func9,S123123456789)
诚然,您可以将其视为仅编写一个脚本来自动执行“func9”任务并调用该脚本的一种变体,$(shell func9 $(STR))
但是谁知道呢,也许您不想费心保存仅与某些制作食谱相关的小脚本&您宁愿将其保存在一些帮助文件中。