makefile、shell:检查字符串变量是否位于列表中(GNU-make check if element exists in list/array)

字符串是否存在于列表中

工作需要,需要在shell脚本中对各种开发板进行区分,起初使用if else这种方式,虽然能解决问题,但是许多有共性的单板也被分开了,其实处理流程是一样的。所以,想了半天,想通过查找单板名字字符串是否位于一个列表的方式实现。找了网上的教程,并不是特别多,所以将自己的解决办法总结下。

shell脚本

#!/bin/bash
list="aaa bbb ccc ddd eee fff"

echo $list | grep -q $1    #在ubp_board中搜索$1,如果找不到$? 的值将会非0,所有用这个作为判断条件。
if [  $? -eq 0  ];then
	do_some_thing #位于列表
else						
	do_other_thing#不位于列表
fi

makefile

由于在makefile中同样需要用到这个场景,将shell脚本的方法直接搬到makefile中,发现会出现错误。估计兼容性存在问题。所以又上网找了半天,依然没有合适的办法,外国人有几个方案:见网址
GNU-make check if element exists in list/array

但是很遗憾,经过我的实验,这三种办法都行不通,各有各的问题。执行时出现失败。后来通过,如下的办法解决,见代码:

list="aaa bbb ccc ddd eee fff"
board=aaa

all:
ifeq ($(findstring $(board), $(list)), $(board))
	@echo find
else
	@echo not found
endif

执行结果如下:

[zhanged]$ make
find
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值