我想安装最新的稳定版本的
Ruby可用
rbenv.这个功能
won’t be happening在rbenv本身.
当我在我的shell中运行命令rbenv install -l时,我可以得到很长的可用版本列表.该列表具有所有类型的条目.以下是展示格式和多样性的部分列表:
$rbenv install -l Available versions: 2.0.0-p643 2.0.0-p645 2.1.0-dev 2.1.0-preview1 2.1.0-preview2 2.1.0-rc1 2.1.4 2.1.5 2.1.6 2.2.0-dev 2.2.0-preview1 2.2.0-preview2 2.2.0-rc1 2.2.0 2.2.1 2.2.2 2.3.0-dev jruby-1.7.19 jruby-1.7.20 jruby-9.0.0.0-dev jruby-9.0.0.0+graal-dev jruby-9.0.0.0.pre1 jruby-9.0.0.0.pre2 maglev-1.0.0 maglev-1.1.0-dev maglev-2.0.0-dev mruby-dev mruby-1.0.0 mruby-1.1.0 rbx-2.5.2 rbx-2.5.3 ree-1.8.7-2011.12 ree-1.8.7-2012.01 ree-1.8.7-2012.02 topaz-dev
我的目标是自动化命令rbenv install VERSION在一个shell脚本,其中VERSION是最高的x.x.x版本.换句话说,我需要自动替换列表中以数字开头的最高条目,而不是以VERSION结尾.从这个列表中我需要2.2.2.
我可以在我的shell脚本中自动选择命令rbenv install x.x.x中最高的x.x.x版本?
编辑:由于Ruby尚未安装,解决方案必须在Bash中,而不是Ruby.
编辑2:我想要的是MRI(主流)版本的Ruby.
解决方法
rbenv install -l | awk -F '.' ' /^[[:space:]]*[0-9]+\.[0-9]+\.[0-9]+[[:space:]]*$/ { if ( ($1 * 100 + $2) * 100 + $3 > Max ) { Max = ($1 * 100 + $2) * 100 + $3 Version=$0 } } END { print Version }'
采取最大的版本(排序顺序或不排序)
如果列表被排序,一个更简单的sed(posix版本)就足够了
rbenv install -l | sed -n '/^[[:space:]]*[0-9]\{1,\}\.[0-9]\{1,\}[[:space:]]*$/ h;${g;p;}'