Синтаксическая ошибка: неожиданный конец файла (ожидается «fi») - PullRequest
13 голосов
/ 19 апреля 2009

Я пишу make-файл в bash, и у меня есть цель, в которой я пытаюсь найти, существует ли файл, и хотя я думаю, что синтаксис правильный, я все равно выдаю мне ошибку.

Вот скрипт, который я пытаюсь запустить

read: 
        if [ -e testFile] ; then \ 
        cat testFile\ 
        fi

Я использую вкладки, так что это не проблема.

Ошибка (когда я набираю: "сделать чтение")

if [ -e testFile] ; then \
        cat testFile \
        fi
/bin/sh: Syntax error: end of file unexpected (expecting "fi")
make: *** [read] Error 2

Ответы [ 4 ]

20 голосов
/ 19 апреля 2009

Попробуйте добавить точку с запятой после cat testFile. Например:

read: 
    if [ -e testFile ] ; then  cat testFile ; fi

альтернативно:

read:
    test -r testFile && cat testFile
6 голосов
/ 26 марта 2011

Я столкнулся с той же проблемой. Это должно сделать это:

file:
    @if [ -e scripts/python.exe ] ; then \
    echo TRUE ; \
    fi
3 голосов
/ 03 апреля 2017

Начиная с GNU Make 3.82, вы можете добавить .ONESHELL: в начало файла, чтобы заставить make запускать все строки в пределах цели в одной оболочке.

.ONESHELL:
SHELL := /bin/bash

foobar:
    if true
    then
        echo hello there
    fi

См. Документацию .

Предварительно добавьте строки с помощью @ или добавьте параметр .SILENT: под .ONESHELL:, чтобы подавить эхо-строки.

2 голосов
/ 18 июля 2010

Я тоже встречался с этой проблемой.

И причина в том, что я добавил несколько комментариев после "\".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...