我想用rbenv安装最新的稳定版Ruby .rbenv本身不会发生此功能.
当我rbenv install -l在shell中运行命令时,我得到了一长串可用版本.该列表包含所有类型的条目.以下是部分列表,以展示格式和多样性:
$ 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
Run Code Online (Sandbox Code Playgroud)
我的目标是rbenv install VERSION在shell脚本中自动执行命令,其中VERSION是最高x.x.x版本.换句话说,我需要自动替换以数字开始,不是结束名单上最高的入门-something成VERSION.从这个清单,我需要2.2.2.
我可以在shell脚本中添加什么来自动选择x.x.x命令中的最高版本rbenv install x.x.x?
编辑:由于尚未安装Ruby,解决方案必须是Bash而不是Ruby.
编辑2:我想要Ruby(主流)版本的Ruby.
mis*_*lav 40
简单的解决方案(直接安装最新的稳定版):
rbenv install $(rbenv install -l | grep -v - | tail -1)
Run Code Online (Sandbox Code Playgroud)
说明:
rbenv install -l | grep -v - | tail -1
Run Code Online (Sandbox Code Playgroud)
过滤掉所有包含连字符的版本-,这是所有非MRI版本和预发布的MRI版本.然后选择最后一个,保证最高,因为ruby-build输出已按版本号升序排序.
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 }'
Run Code Online (Sandbox Code Playgroud)
如果列表被排序,则更简单的sed(posix版本)就足够了
rbenv install -l | sed -n '/^[[:space:]]*[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}[[:space:]]*$/ h;${g;p;}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7975 次 |
| 最近记录: |