Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何提取make';谁的版本号?_Bash_Awk_Makefile_Version - Fatal编程技术网

Bash 如何提取make';谁的版本号?

Bash 如何提取make';谁的版本号?,bash,awk,makefile,version,Bash,Awk,Makefile,Version,如何从bash shell获取make的数字版本号? 我试过,除其他外: MAKE_VERSION=$(MAKE--VERSION 2>&1 | awk'/MAKE/{print$2}') 但我得到的是“Make”而不是它的版本 这是我从make--version获得的输出: GNU Make 4.1 Built for x86_64-unknown-cygwin Copyright (C) 1988-2014 Free Software Foundation, Inc. License GPL

如何从bash shell获取
make
的数字版本号? 我试过,除其他外:

MAKE_VERSION=$(MAKE--VERSION 2>&1 | awk'/MAKE/{print$2}')

但我得到的是“Make”而不是它的版本

这是我从
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.
GNU Make 4.1
为x86_64-unknown-cygwin构建
版权所有(C)1988年至2014年自由软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件:您可以自由更改和重新发布它。
在法律允许的范围内,不存在任何担保。
在本例中,我希望获得字符串“
4.1

使用并:

使用和:

您可以使用:

make_version=$(make --version 2>&1 | awk '/Make/ {print $NF}')
mver=$(make -f <(echo '$(info $(MAKE_VERSION)) all:;') -q)
因为最后一个字段提供了版本号。

您可以使用:

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

由于最后一个字段为我们提供了版本号。

对于
make
版本的4.0+,您也可以使用此字段:

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

对于
make
版本3.81和3.82(假设
bash
),您可以使用:

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

对于
make
4.0+版,您也可以使用此选项:

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

对于
make
版本3.81和3.82(假设
bash
),您可以使用:

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

哈哈,学习基本的awk。或者真正理解你正在执行的命令是什么。你知道MAKE已经在内部定义了
MAKE\u VERSION
吗?哈哈,学习基本awk。或者真正理解您正在执行的命令的作用。您知道MAKE已经在内部定义了
MAKE\u VERSION