Ошибка в моем Makefile при использовании seq в цикле for - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть следующий Makefile:

MYVAR = 10

target:
    for i in $(seq 0 $MYVAR)
    do
        echo "test" . $i
    done

В основном я хочу получить ...

test 1
test 2
...
test n

Когда я пытаюсь запустить его, я получаю:

для синтаксической ошибки i: неожиданный конец файла

Какая магия для этого правильна?

1 Ответ

0 голосов
/ 14 сентября 2018

Правильный синтаксис:

MYVAR = 10

target:
    for i in $$(seq 0 $(MYVAR)); \
    do \
        echo "test" . $$i; \
    done

, который работает как:

$ make
for i in $(seq 0 10); \
do \
    echo "test" . $i; \
done
test . 0
test . 1
test . 2
test . 3
test . 4
test . 5
test . 6
test . 7
test . 8
test . 9
test . 10

(Я не уверен, что вы подразумеваете под . в команде echo,если это не опечатка).

Обратите внимание, главным образом, что внутри команды оболочки в рецепте любой $..., который вы собираетесь расширить с помощью оболочки, должен быть экранирован как $$..., чтобы он не раскрылсяmake.

...