如何在omakefile中提取并打印变量值的单个字符
OMake提取变量首字符实现方案
原有写法失效原因
之前使用的$(shell echo $(CHECK) | head -c 1)写法失效有两个核心原因:
head -c是GNU head的扩展参数,不属于POSIX标准,在不少类UNIX环境下不被支持- OMake的
shell函数处理多段管道命令时,部分版本存在句柄回收逻辑问题,会提前截断管道内容,导致最终读取结果为空
可用实现方式
方案1:内置函数实现(优先推荐)
OMake本身自带完整的字符串处理内置函数,不需要调用外部shell命令,无兼容问题、执行效率最高:
CHECK = hello # 拆分字符串为单字符序列,取索引为0的第一个字符 FIRST = $(nth 0, $(split , $(CHECK))) .PHONY: show show: @echo $(FIRST)
执行omake show即可直接输出预期结果h。
方案2:标准Shell命令实现
如果习惯通过shell逻辑处理,可使用POSIX标准的expr substr命令,避开非标准参数和管道兼容问题:
CHECK = hello # expr substr 语法:expr substr 字符串 起始位置 截取长度,起始位置从1计数 FIRST = $(shell expr substr "$(CHECK)" 1 1) .PHONY: show show: @echo $(FIRST)
内容的提问来源于stack exchange,提问作者Kamaraj
相关产品推荐
相关产品推荐

