我正在用bash编写一个makefile,我有一个目标,在其中我试图查找文件是否存在,即使我认为语法是正确的,我仍然给我一个错误。
以下是我尝试运行的脚本
read:
if [ -e testFile] ; then \
cat testFile\
fi
我正在使用标签,这不是问题。
错误是(当我输入时:“make read”)
if [ -e testFile] ; then \
cat testFile \
fi
/bin/sh: Syntax error: end of file unexpected (expecting "fi")
make: *** [read] Error 2
答案 0 :(得分:20)
尝试在cat testFile
之后添加分号。例如:
read:
if [ -e testFile ] ; then cat testFile ; fi
或者:
read:
test -r testFile && cat testFile
答案 1 :(得分:6)
我遇到了同样的问题。这应该这样做:
file:
@if [ -e scripts/python.exe ] ; then \
echo TRUE ; \
fi
答案 2 :(得分:3)
自GNU Make 3.82起,您可以在文件顶部添加.ONESHELL:
,告诉make在单个shell中运行目标中的所有行。
.ONESHELL:
SHELL := /bin/bash
foobar:
if true
then
echo hello there
fi
请参阅documentation。
使用@
添加行前导或在.SILENT:
下添加.ONESHELL:
选项以禁止回显行。
答案 3 :(得分:2)
我也遇到了这个问题。
原因是我在“\”之后添加了一些评论。