使用gnu make提取6个字符的子字符串

时间:2018-08-29 15:32:20

标签: git makefile substring

我使用以下命令提取了一个git哈希字符串:

git describe --always --abbrev=6

即我想得到6个字符。 问题是,如果6个字符的标签不是唯一的,git似乎会给我7个字符。 所以我想使用像sed这样的标准make / bash命令提取前6个字符。使自身似乎不支持子字符串。

当前,我的make脚本包含以下内容:

foo:=$(lastword $(subst M,,$(subst :, ,$(shell git describe --always --abbrev=6))))

这可能会导致foo = e94181c,但我希望它只是e94181以适合24位内存区域。

2 个答案:

答案 0 :(得分:3)

我可能会这样做:

foo := $(shell git describe --always --abbrev=6 | cut -c 1-6)

答案 1 :(得分:1)

它仅适用于GNU make函数,但最简单的方法可能是使用make使用的shell。如果是bash,则可以使用:

foo := $(shell a=$$(git describe --always --abbrev=6); echo $${a:0:6})