语法错误:文件结束意外(期待“fi”)

时间:2009-04-19 05:48:22

标签: bash makefile

我正在用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

4 个答案:

答案 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)

我也遇到了这个问题。

原因是我在“\”之后添加了一些评论。