gnu make https://www.gnu.org/software/make/manual/make.html#toc-Functions-for-Transforming-Text具有排序功能。排序功能的说明指出了排序功能
以词汇顺序对列表中的单词进行排序,删除重复的单词。输出是由单个空格分隔的单词列表。
我创建了这样的测试Makefile
TEST="this is a test test test test test"
all:
@echo $(sort $(TEST))
我的输出是这是一个测试测试
重复项没有从字符串中完全删除! 我是否错误地解释了排序功能?还是gnu make的错误?
答案 0 :(得分:1)
双引号绝对没有特殊之处。因此TEST
变量包含单词"This
,is
,a
,test
,test
,test
和{{1 }},然后对其进行排序,并删除重复项,分别为test"
,"This
,a
,is
和test
,因此shell得到(1){{1 }},将双引号解释为字符串标记并输出test"
(而不是echo "This a is test test"
看到This a is test test
的位置)。
(1)调试像这样的问题的一个有用技巧是将This is a test test
变量设置为a
,这样您就可以看到shell得到了什么。例如,您将SHELL
与Makefile一起使用
/bin/echo