2010-09-13 11 views
4

En utilisant make de GNU, j'aimerais extraire le premier caractère d'une variable. Actuellement, j'utilise la fonction shell pour que bash exécute la sous-chaîne. Je veux savoir s'il existe un moyen d'utiliser les built-ins de gmake pour faire la même chose.Comment retourner le premier caractère d'une variable dans gmake

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

Si vous pouvez garantir que $ DIR sera seulement développé dans une recette, qu'est-ce qui ne va pas avec votre première définition? (légèrement modifié) DIR =/utilisateur/$$ {USER: 0: 1}/$$ USER/ tous: echo "USER: [$$ USER] DIR: [$ {DIR}]" – bobbogo

Répondre

4

Ce n'est pas très satisfaisant, et vous auriez à ajouter à $(INITIALS) jusqu'à ce que vous étiez heureux, mais:

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)/ 

Peut-être l'approche raisonnable serait de prendre note des := usages dans ce qui précède, et modifiez votre version simple en DIR := ...$(shell ...)... afin que la commande shell ne soit invoquée qu'une seule fois.