Rob*_* Hu 4 shell awk cut makefile sed
我正在编写 Makefile。
version := v39.0.12.8 // format rules: va.b.c.d
Run Code Online (Sandbox Code Playgroud)
我想根据格式获取“version_a”,在本例中为“39”。这个怎么做?也许通过“sed/cut/awk,但我不熟悉这些 shell 命令。
例如
version version_a version_b version_c version_d
v39.0.12.8 39 0 12 8
v87.2.9.17 87 2 9 17
v142.98.77.68 142 98 77 68
Run Code Online (Sandbox Code Playgroud)
这可以通过功能来实现make,如下所示:
$ cat Makefile
version := v39.0.12.8
version_tuple := $(subst ., ,$(version:v%=%))
version_a := $(word 1,$(version_tuple))
version_b := $(word 2,$(version_tuple))
version_c := $(word 3,$(version_tuple))
version_d := $(word 4,$(version_tuple))
all:
echo version_tuple = $(version_tuple)
echo version_a = $(version_a)
echo version_b = $(version_b)
echo version_c = $(version_c)
echo version_d = $(version_d)
Run Code Online (Sandbox Code Playgroud)
输出:
$ make -s
version_tuple = 39 0 12 8
version_a = 39
version_b = 0
version_c = 12
version_d = 8
Run Code Online (Sandbox Code Playgroud)