如何在OS X中获取Bash版本号

Sin*_*u S 7 macos bash shell

我正在编写一个需要Bash 4.x的安装脚本.此安装脚本也可以在OSX上使用.我知道在Linux系统上我可以通过检查echo $BASH_VERSIONenv变量获得Bash版本但是如何在Darwin中获得bash版本?跑步bash --version会给:

GNU bash, version 4.3.33(1)-release (x86_64-apple-darwin14.1.0)
Copyright (C) 2013 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.
Run Code Online (Sandbox Code Playgroud)

不是我想要的输出.我希望输出只是版本号,特别是主版本号.

Bri*_*ell 11

echo $BASH_VERSION 适用于Mac OS X:

$ echo $BASH_VERSION
3.2.57(1)-release
Run Code Online (Sandbox Code Playgroud)

如果您需要通过调用bash它们的路径来检查是否安装了更新的bash(例如通过Homebrew或MacPorts),您可以在以下版本中执行该命令bash:

$ bash -c 'echo $BASH_VERSION'
4.3.30(1)-release
Run Code Online (Sandbox Code Playgroud)

为了得到只是其中一个版本的组件,有一个数组,BASH_VERSINFO,这样你就可以访问每一个元素.如果你只是想要主要版本(这是在我的系统上,我的登录shell是Bash 3,但我安装了Bash 4用于编写脚本):

$ echo ${BASH_VERSINFO[0]}
3
$ bash -c 'echo ${BASH_VERSINFO[0]}'
4
Run Code Online (Sandbox Code Playgroud)

您还可以看到数组的完整内容:

$ echo "${BASH_VERSINFO[@]}"
3 2 57 1 release x86_64-apple-darwin14
$ bash -c 'echo "${BASH_VERSINFO[@]}"'
4 3 30 1 release x86_64-apple-darwin14.0.0
Run Code Online (Sandbox Code Playgroud)