eval函数
eval是shell的内建函数,这条命令的重点在于将所有参数用空格连接起来,然后重新解析并执行这条命令。
例如:
$(eval h_m := $(filter-out $(h_r), $(h_m)))会解析执行 h_m := $(filter-out $(h_r), $(h_m)) 命令,相当于定义了一个变量并赋值。
通常和宏代码块和foreach循环函数配合使用,例如:
#$(foreach m, list, comment)
define add-all-target-to-target-required-modules-deps
$(foreach m,$(ALL_MODULES), \
$(eval r := $(ALL_MODULES.$(m).REQUIRED)) \
$(if $(r), \
$(eval r := $(call module-installed-files,$(r))) \
$(eval t_m := $(filter $(TARGET_OUT_ROOT)/%, $(ALL_MODULES.$(m).INSTALLED))) \
$(eval t_r := $(filter $(TARGET_OUT_ROOT)/%, $(r))) \
$(eval t_m := $(filter-out $(t_r), $(t_m))) \
$(if $(t_m), $(eval $(call add-required-deps, $(t_m),$(t_r)))) \
) \
)
endef
Shelleval函数详解与应用示例
eval函数在Shell中用于解析并执行字符串作为命令。它常与宏代码块和foreach循环结合,例如在变量赋值、条件判断和模块依赖处理中。文章提供的示例展示了如何使用eval定义变量、处理列表过滤和添加目标依赖。
1584

被折叠的 条评论
为什么被折叠?



