Ответ 1
Попробуйте добавить точку с запятой после cat testFile
. Например:
read:
if [ -e testFile ] ; then cat testFile ; fi
в качестве альтернативы:
read:
test -r testFile && cat testFile
Я пишу makefile в bash, и у меня есть цель, в которой я пытаюсь найти, существует ли файл, и хотя я считаю, что синтаксис верен, я все равно выдаю ошибку.
Вот script, который я пытаюсь запустить
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
Попробуйте добавить точку с запятой после cat testFile
. Например:
read:
if [ -e testFile ] ; then cat testFile ; fi
в качестве альтернативы:
read:
test -r testFile && cat testFile
Я столкнулся с той же проблемой. Это должно сделать это:
file:
@if [ -e scripts/python.exe ] ; then \
echo TRUE ; \
fi
Я также встретил эту проблему.
И причина в том, что я добавил некоторые комментарии после "\".
Так как GNU Make 3,82, вы можете добавить .ONESHELL:
в начало файла, чтобы сообщить make, чтобы запустить все строки внутри цели в одной оболочке.
.ONESHELL:
SHELL := /bin/bash
foobar:
if true
then
echo hello there
fi
См. документацию .
Подготовить строки с помощью @
или добавить параметр .SILENT:
под .ONESHELL:
для подавления эхо-строк.