Используйте первую букву строки в Makefile, используя синтаксис bash 4 - PullRequest
0 голосов
/ 01 мая 2018

В bash 4 (и выше), чтобы использовать первую букву строки, хранящейся в переменной L1, я могу сделать следующее:

L1=en
Ll1=${L1^}
echo $Ll1

Это печатает En.

Я пытаюсь сделать нечто подобное в Makefile, но не могу заставить работать синтаксис ${L1^}.

SHELL := /bin/bash

L1 = en
Ll1 := $(shell echo ${L1^})

all:
    @echo $(Ll1)

Создает пустой вывод.

Можно ли заставить это работать с этим синтаксисом bash, не прибегая к tr / sed?

P.S. Мне нужно присвоить его переменной, а не отражать его напрямую. Я использую bash 4.3.48 и GNU make 4.1.

1 Ответ

0 голосов
/ 01 мая 2018

У вас две проблемы в вашем make-файле, во-первых, переменная L1 определена в make и недоступна при вызове вашей оболочки, используйте:

$(shell L1=$(L1); echo ...)

для определения L1 в вашей оболочке.

Знак доллара должен быть экранирован, чтобы его не интерпретировал make:

$(shell L1=$(L1); echo $${L1^})
...