次の行を含むMakefile
を実行しています...
find ./ -type f -regextype emacs -regex ".*tests$" | xargs rm -f
エラーが発生しています:
find ./ -type f -regextype emacs -regex ".*tests | xargs rm -f
/bin/sh: 1: Syntax error: Unterminated quoted string
私は逃げる正しい方法をグーグルで検索しました。私が遭遇したエスケープ構文はどれも機能していないようです(つまり、一重引用符を使用する、単一の円記号を使用する、二重の円記号を使用する)。
LXDE(Ubuntu 14.04)でbashを実行しています。
助言がありますか?
makefile
の行を比較します。
find ./ -type f -regextype emacs -regex ".*tests$" | xargs rm -f
エラーメッセージの行:
find ./ -type f -regextype emacs -regex ".*tests | xargs rm -f
make
が$"
を飲み込んだようです。
これを回避するには、ドル記号をエスケープする必要があります。試してみてください:
find ./ -type f -regextype emacs -regex ".*tests$$" | xargs rm -f
GNU Make Manual Section 4.2 から:
ドル記号は変数参照の作成を開始するために使用されるため、ターゲットまたは前提条件にドル記号が本当に必要な場合は、そのうちの2つ「$$」を記述する必要があります(変数の使用方法を参照)。二次拡張を有効にしていて(二次拡張を参照)、前提条件リストに文字通りのドル記号が必要な場合は、実際には4つのドル記号(「$$$$」)を記述する必要があります。