因此,我想创建一个shell脚本,自动执行下载程序包,解压缩,cd入其中,配置它,并从源代码编译它的过程。
我已经开始使用下面的简单脚本了:
#!/bin/bash
PROJ=ruby
curl https://api.github.com/repos/$PROJ/$PROJ/tags -o $PROJ.json
cat $PROJ.json | grep -Po '(?<="name": ")[^"]*'
这将获取Ruby项目的JSON文件,并返回最新的(?)标记名称(例如ruby_2_3_1)。
然而,我很愚蠢,我想在这个剧本上进一步扩展。我想:
忽略任何不包含&#34; ruby&#34;
仅获取最新代码(在此示例中为2_3_1)
获取标记2_3_1的URL并从该标记下载源代码的tarball
解压缩tarball(除非它检测到此tarball之前已解压缩)
我可以独自完成其余的工作,因为我非常熟悉./configure,make,make install等。
希望这不是太困难。我更喜欢不来使用jq(只是标准的正则表达式),但如果使用jq更容易,我会很好。
答案 0 :(得分:2)
在https://api.github.com/repos/ruby/ruby/tags我不会在任何标签名称中看到ruby这个词。
标签按名称按相反顺序排序(与sort -nr
相同)
您可以通过以下方式下载并解压缩最新标记ruby tarball:
LAST_URL=`cat ruby.json | grep -Po '(?<="tarball_url": ")[^"]* | egrep -v [a-z]$ | head -1'
wget $LAST_URL && tar -xvzf `basename $LAST_URL`
一些注意事项:
egrep -v [a-z]$
过滤掉非红宝石套餐,但未填写数字(es。 yarv_migration_base )head -1
以相反的顺序获取第一个标记(格式为vX_X_X),最新的