2

変数 CHAPTER にスペースが含まれているかどうかを知りたいです。私は成功せずにfindstringを使用しようとしました:

CHAPTER=default
new:
ifeq (" ",$(findstring " ",$(CHAPTER)))
    $(error Variable contains space)
else
    echo "variable ok"
endif

このコードは「変数OK」と言っていますが、私は反対のことを期待しています。

私は何を間違っていますか?

どうすればいいですか?

4

1 に答える 1

4

wordsfunctionを使用して、変数値が単一の単語であるかどうかをテストするだけです。

ifneq (1,$(words [$(CHAPTER)]))
# Things are bad...
endif

先頭/末尾の空白も検出するのに役立つ角括弧に注意してください。

アップデート。

もう 1 つのオプションは、値に 1 つのスペースを含む変数を定義し、ターゲット変数で出現箇所を検索することです。

space :=
space +=

ifneq (,$(findstring,$(space),$(CHAPTER)))
# Things are bad...
endif
于 2012-04-19T15:13:48.740 に答える