2016-01-18 32 views
1

如何从bash shell获得make的数字版本号? 我试过了,其中包括:如何提取make的版本号?

MAKE_VERSION=$(make --version 2>&1 | awk '/Make/ {print $2}')

,但我得到 “做”,而不是它的版本。

这是输出,我从make --version得到:

GNU Make 4.1 
Built for x86_64-unknown-cygwin 
Copyright (C) 1988-2014 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. 

在这种情况下,我想获得字符串“4.1”。

+0

大声笑,学习基本的awk。或者实际了解你正在执行的命令是做什么的。 – 123

+0

你知道MAKE_VERSION已经由make内部定义吗? – user657267

回答

3

您可以使用:

make_version=$(make --version 2>&1 | awk '/Make/ {print $NF}') 

最后一场给我们的版本号。

1

使用headcut

$ make --version | head -1 | cut -d" " -f3 
3.81 
3

对于make版本的4.0+,你可以用这个也:

mver=$(make --eval '$(info $(MAKE_VERSION))' --eval 'all:;' -q) 

为3.81和3.82(假设bashmake版本,你可以使用:

mver=$(make -f <(echo '$(info $(MAKE_VERSION)) all:;') -q) 

make 3.80(及以上)没有$(info)函数,因此您在此处留下了其他答案中的方法或使用了$(warning),仍然需要解析它:

mver=$(make -f <(echo '$(warning $(MAKE_VERSION)) all:;') -q 2>&1 | awk '{print $NF}')