web-dev-qa-db-ja.com

構文エラー:ファイルの終わりが予期しない(「fi」が必要)

私はbashでmakefileを書いていますが、ファイルが存在するかどうかを見つけようとするターゲットがあり、構文は正しいと思いますが、それでもエラーが発生します。

これが私が実行しようとしているスクリプトです

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

私はタブを使用しているので、それは問題ではありません。

エラーは次のとおりです(「makeread」と入力すると)

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

cat testFileの後にセミコロンを追加してみてください。例えば:

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

あるいは:

read:
    test -r testFile && cat testFile
23
jwa

私は同じ問題に遭遇しました。これはそれを行う必要があります:

file:
    @if [ -e scripts/python.exe ] ; then \
    echo TRUE ; \
    fi
7
honkaboy

GNU Make 3.82なので、ファイルの先頭に.ONESHELL:を追加して、ターゲット内のすべての行を単一のシェルで実行するようにmakeに指示できます。

.ONESHELL:
Shell := /bin/bash

foobar:
    if true
    then
        echo hello there
    fi

ドキュメント を参照してください。

行の前に@を付けるか、.SILENT:の下に.ONESHELL:オプションを追加して、エコーする行を抑制します。

3
Evidlo

私もこの問題に遭遇しました。

その理由は、「\」の後にコメントを追加したためです。

2
HackNone