2016-01-18 52 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}')