在AIX中检索bash版本

时间:2014-11-19 15:53:50

标签: bash shell unix aix

在使用bash的Unix系统上检测到shellshock问题后,我必须创建一个脚本作为我在公司实习的一部分,以便更新bash。

安装更新的IBM bash * .rpm的先决条件是:

  • 安装了bash(简单检查)
  • bash版本低于4.2.50

我在处理第二部分时遇到问题,因为真正的bash版本是由命令bash -version而不是rpm -qi bash给出的,它基本上给出了安装包的版本/版本(并不是必需的真正的bash版本。)

基本上,我的脚本是这样的:

if [[ bash installed ]] ; then
  if [[ bash version installed is < 4.2.50 ]] ; then
    install bash version 4.2.50
  fi
fi

bash -version会返回大量文字,我想挑选出bash版本。

到目前为止,我已使用以下命令:

$ bash -version | grep version | awk '{print $4}' | head -n 1

返回:

4.2.50(1)-release

有没有办法检索真正的bash版本?我使用sed命令没有成功。

2 个答案:

答案 0 :(得分:1)

我猜您可以直接使用$BASH_VERSION变量:

$ echo "$BASH_VERSION"
4.2.47(1)-release

来自man bash

  

外壳变量

     

BASH_VERSION

     

扩展为描述此bash实例版本的字符串。


然后,要检查版本是否低于或高于4.2.50,您可以使用sort -V订购它们:

$ printf "%s\n%s\n" 4.2.50 $BASH_VERSION | sort -V
4.2.47(1)-release
4.2.50

$ printf "%s\n%s\n" 4.2.50 5.2.33 | sort -V
4.2.50
5.2.33

这应该足以让您确定当前的bash版本是否低于或高于所需版本,最终结果只需要headtail

来自man sort

  

-V , - version-sort

     

文本中的自然类型(版本)数字

答案 1 :(得分:1)

好像你正试图获得这样的输出,

$ bash -version | awk -F'[ (]' '/version/{print $4;exit}'
4.3.11