如何在gmake中返回变量的第一个字符

时间:2010-09-13 19:52:57

标签: string makefile gnu-make

使用GNU的make,我想提取变量的第一个字符。目前我正在使用shell函数让bash执行子字符串。我想知道是否有办法使用gmake的内置函数来做同样的事情。

DIR=/user/$(shell echo "$${USER:0:1}")/$(USER)/

2 个答案:

答案 0 :(得分:4)

这不是很令人满意,你必须加$(INITIALS)直到你开心,但是:

INITIALS := a b c d e f g h i j k l m n o p q r s t u v w x y z
U := $(strip $(foreach a,$(INITIALS),$(if $(USER:$a%=),,$a)))

DIR = /user/$(U)/$(USER)/

也许明智的做法是注意上面的:=用法,并将简单版本修改为DIR := ...$(shell ...)...,以便只调用一次shell命令。

答案 1 :(得分:2)

http://www.gnu.org/software/make/manual/make.html#Functions是您可以使用gmake builtins执行的所有操作的完整列表。

不幸的是,似乎无法在没有$(shell)的情况下提取第一个字符。