C’est une question stupide, mais avec GNU Make:
VAR = MixedCaseText LOWER_VAR = $(VAR,lc) default: @echo $(VAR) @echo $(LOWER_VAR)
Dans l’exemple ci-dessus, quelle est la syntaxe correcte pour convertir le contenu de VAR en minuscules? La syntaxe affichée (et tout ce que j’ai déjà vu) fait que LOWER_VAR est une chaîne vide.
vous pouvez toujours bash tr
LOWER_VAR = `echo $(VAR) | tr AZ az`
ou
LOWER_VAR = $(shell echo $(VAR) | tr AZ az)
Les fonctions ‘lc’ que vous essayez d’appeler proviennent de GNU Make Standard Library
En supposant que soit installé, la syntaxe correcte serait
LOWER_VAR = $(call lc,$(VAR))
Vous pouvez le faire directement dans gmake, sans utiliser la bibliothèque GNU Make Standard:
lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1)))))))))))))))))))))))))) VAR = MixedCaseText LOWER_VAR = $(call lc,$(VAR)) all: @echo $(VAR) @echo $(LOWER_VAR)
Ça a l’air un peu maladroit, mais ça fait le boulot.
Si vous utilisez la variété $ (shell), veuillez utiliser :=
au lieu de just =
, comme dans LOWER_VAR := $(shell echo $VAR | tr AZ az)
. De cette façon, vous n’invoquez le shell qu’une seule fois, lorsque la variable est déclarée, et non chaque fois que la variable est référencée!
J’espère que cela pourra aider.
Pour traiter les majuscules avec des accents:
LOWER_VAR = $(shell echo $VAR | tr '[:upper:]' '[:lower:]')
Résultats:
$ VAR="Éclipse" $ echo $VAR | tr AZ az Éclipse $ echo $VAR | tr '[:upper:]' '[:lower:]' éclipse
Je trouve ce peu plus propre …
$(shell tr '[:upper:]' '[:lower:]' <<< $(VAR))