首页 > 解决方案 > 在 for 循环中使用 seq 时我的 Makefile 出错

问题描述

我有以下 Makefile:

MYVAR = 10

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

基本上我想要得到的是......

test 1
test 2
...
test n

当我尝试运行它时,我得到:

for i in 语法错误:文件意外结束

什么是正确的魔法?

标签: makefilegnu-make

解决方案


正确的语法是:

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,如果不是错字的话)。

请注意,在配方中的 shell 命令中$...,您打算通过 shell 扩展的任何内容都必须转义,$$...以便它不会make自行扩展。


推荐阅读