私は Windows で make を使用しており、いくつかの変数を操作してファイル名を作成する必要があります。基本ファイル名と追加するオプションの部分があります。オプションの部分を追加する場合は、2 つの部分の間にアンダースコアを挿入する必要があります。オプションの部分はファイルから読み取られており、5 文字 (スペースまたは英数字) が含まれています。
これは私が期待していたものです:
OPTIONAL_NAME=" "
BASE_NAME=myfile
STRIPPED_OPTIONAL_NAME=$(strip $(OPTIONAL_NAME))
ifeq ("$(STRIPPED_OPTIONAL_NAME)","")
FULL_NAME=$(BASE_NAME)
else
FULL_NAME=$(BASE_NAME)_$(STRIPPED_OPTIONAL_NAME)
endif
OPTIONAL_NAME には次の値を指定できます:
OPTIONAL_NAME=" "
OPTIONAL_NAME="ABCDE"
OPTIONAL_NAME="A "
OPTIONAL_NAME=" A "
OPTIONAL_NAME=" A"
OPTIONAL_NAME の値は、インポートされる方法のために引用符で囲まれています (私の前の質問を参照してください - Read a value from a file into a variable )。
結果の問題は、strip
複数のスペースを単一のスペースに減らしているように見えますが、実際には先頭または末尾のスペースを削除していないことです。
これを使用してスペースを削除しようとしました:
space:=
space+=
STRIPPED_OPTIONAL_NAME=$(subst $(space),,$(OPTIONAL_NAME))
これによりスペースが削除されますが、空の文字列を確認するのに苦労しています。
ありがとう
スティーブン