我有一个简单的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代码,并且效果很好。我在这里做错了什么?
答案 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
以分号结尾。