我在Windows中使用make,我需要操作一些变量来创建文件名。我有一个基本文件名和一个可选的附加部分。如果附加了可选部件,则应在两个部件之间插入下划线。可选部分从文件中读入,包含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))
这会删除空格,但我很难检查空字符串。
由于
斯蒂芬
答案 0 :(得分:0)
您不应该将变量放在引号中的比较中。试试这个:
ifeq ($(STRIPPED_OPTIONAL_NAME),"")
以上检查空字符串。
或者
ifeq ($(STRIPPED_OPTIONAL_NAME)," ")
检查单个空格。