1. ホーム
  2. bash

makefile 内にディレクトリが存在するかどうかをテストする

2023-09-28 05:40:39

質問

彼の 答え Grundlefleckがディレクトリが存在するかどうかをチェックする方法を説明しています。私はこの方法を makefile の中で使ってみました。

foo.bak: foo.bar
    echo "foo"
    if [ -d "~/Dropbox" ]; then
        echo "Dir exists"
    fi

実行中 make foo.bak (与えられた foo.bar が存在する場合)、次のようなエラーが発生します。

echo "foo"
foo
if [ -d "~/Dropbox" ]; then
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [foo.bak] Error 2

私が行った回避策は、テストが実装されたスタンドアロンのbashスクリプトを用意し、そのスクリプトを makefile . しかし、これは非常に面倒なようです。ディレクトリが存在するかどうかを makefile ?

どのように解決するのですか?

Make コマンドは、シェルコマンドの場合、1行にまとめるか、バックスラッシュで行を拡張して複数行にする必要があります。ですから、この方法でうまくいきます。

foo.bak: foo.bar
    echo "foo"
    if [ -d "~/Dropbox" ]; then echo "Dir exists"; fi

または

foo.bak: foo.bar
    echo "foo"
    if [ -d "~/Dropbox" ]; then \
        echo "Dir exists"; \
    fi