1

我在 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 的值周围有引号(请参阅我之前的问题 -从文件中读取值到变量中)。

结果的问题是strip似乎将多个空格减少为单个空格,但实际上并未删除前导或尾随空格。

我试过用它来去除空格:

space:=
space+=
STRIPPED_OPTIONAL_NAME=$(subst $(space),,$(OPTIONAL_NAME))

这确实删除了空格,但我很难检查是否有空字符串。

谢谢

斯蒂芬

4

1 回答 1

0

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

ifeq ($(STRIPPED_OPTIONAL_NAME),"")

上面检查空字符串。

或者

ifeq ($(STRIPPED_OPTIONAL_NAME)," ")

检查单个空间。

于 2012-08-30T10:14:11.507 回答