从变量中去除所有空格,如果不是空白,则附加到另一个变量

时间:2012-08-30 10:07:03

标签: makefile

我在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))

这会删除空格,但我很难检查空字符串。

由于

斯蒂芬

1 个答案:

答案 0 :(得分:0)

您不应该将变量放在引号中的比较中。试试这个:

ifeq ($(STRIPPED_OPTIONAL_NAME),"")

以上检查空字符串。

或者

ifeq ($(STRIPPED_OPTIONAL_NAME)," ")

检查单个空格。