【发布时间】:2020-10-20 14:16:10
【问题描述】:
我想检查一个字符串变量是否包含 Makefile 中的指定子字符串。目的是清理子文件夹。 我使用了下面的代码,但它不起作用。
SERVICES_LIST = A_Service B_Service C_Service #example
SPECIFIC_SERVICE_LIST = A_Service B_Service
clean:
@list='$(SERVICES_LIST)';for subdir in $$list;do \
echo "clean in $$subdir";\
if [[ "*$$subdir*" == "$(SPECIFIC_SERVICE_LIST)" ]];then\
make $$subdir clean;\
fi;\
done;\
【问题讨论】:
-
请使用 SO 的格式化功能格式化您的问题,以便于阅读。另外,在提问时请不要说“没用”之类的话;这无助于任何人了解情况。相反,显示你输入的命令和你得到的输出(或者,如果有很多输出,至少是所有的错误消息——不仅仅是最后几行!!事实上,FIRST 错误消息几乎总是比最后一个,尽管最好包括所有错误,除非有太多)。
-
颠倒相等测试的顺序,将星号放在引号中:
if [[ "$(SPECIFIC_SERVICE_LIST)" == *"$$subdir"* ]] -
无论哪种方式,@Beta、
==都会执行字符串比较,而不是模式匹配比较。 -
@JohnBollinger:在这种情况下它有效。