Makefile:语法错误/ bin / sh:-c:语法错误:文件意外结束

时间:2019-06-20 01:14:34

标签: bash makefile

我有一个简单的Makefile:

afterEach

运行git_repo := some_git_repo repo: if [ -v $(git_repo) ]; then \ echo "exists!" \ else \ echo "not exist!" \ fi; clean: repo 给我一个错误:

make clean

我不太确定此错误的原因是什么。我已经无数次地仔细检查了语法,检查了许多不同的StackOverflow问题,甚至尝试分别在/bin/sh: -c: line 4: syntax error: unexpected end of file make: *** [repo] Error 2 规则下运行bash代码,并且效果很好。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

反斜杠将所有shell行连接成一条长行,这意味着您需要在每行末尾使用分号来分隔语句。

if [ -v $(git_repo) ]; then \
    echo "exists!"; \
else \
    echo "not exist!"; \
fi

删除反斜杠和换行符(并替换$(git_repo)之后),shell会看到:

if [ -v some_git_repo ]; then echo "exists!"; else echo "not exist!"; fi

答案 1 :(得分:1)

您需要分号。 “ \”的作用是将所有内容放在同一行。

repo: 
    if [ -v $(git_repo) ]; then \
        echo "exists!"; \
    else \
        echo "not exist!"; \
    fi;

现在看到echo以分号结尾。