如果我不知道版本,如何通过外壳脚本下载最新版本的 curl ?



我正在尝试构建一个脚本,该脚本将自动从https://curl.haxx.se/download/并将其安装在本地主机(Linux x86_64)上。如果我手动尝试,我可以在网站上查找最新版本,并使用适当的wget命令(版本名称在URL中)。例如,如果我想下载curl-8.0.1,wget命令将是

wget https://curl.haxx.se/download/curl-8.0.1.tar.gz

要在脚本中构建它,我必须首先提取下载网站上提供的最新版本。

  1. 有没有一种简单的方法可以自动检查最新版本并在脚本中构建wget命令?

  2. 如果我从网站下载index.html文件;下载/卷曲-";以及";tar.gz";用";头-1";,我得到一条线如下。有没有一种使用awk/sed/grep的简单方法可以让我从这行中提取版本号?

# grep -i "download/curl-" index.html | grep "tar.gz" | head -1
<tr class="even"><td>8.0.1</td> <td><a href="download/curl-8.0.1.tar.bz2">2.97MB</a></td><td><a href="download/curl-8.0.1.tar.gz">4.09MB</a></td><td>&nbsp;</td>

我试着用awk获得如下版本。这可能不是最好、最有效的方法。所以我想知道是否有更好的方法来获得最新的可下载卷曲版本

# grep -i "download/curl-" index.html | grep "tar.gz" | head -1 | awk -F".tar.gz" '{ print $1 }' | awk -F"download/" '{ print $NF }'
curl-8.0.1

如果解析网站的HTML感觉太脆弱,您也可以使用api从Github repo获得Curl:

curl -s https://api.github.com/repos/curl/curl/releases/latest | grep "browser_download_url.*gz" | cut -d : -f 2,3 | tr -d " | head -1 | wget -qi -

head是因为其中一个输出将是密钥。你也可以使用其他一些工具从响应中获取信息,比如jq,如果你已经安装了它-关键是,GH API的/releases/latest会告诉你最新的标签是什么

URL="https://curl.se"

使用卷曲

$ curl -ks "$URL/download/" | tr ' ' 'n' | awk -F'"' -v url="$URL" '
/download/curl.*.tar.gz/{
n=split($2,a,"/"); 
print | "curl -ks " url"/"$2 " --output " a[n]; 
exit
}'
$ ls
curl-8.0.1.tar.gz

使用wget

$ wget --no-check-certificate -q --output-document - "$URL/download/" | tr ' ' 'n' | 
awk -F'"' -v url="$URL" '
/download/curl.*.tar.gz/{
print | "wget --no-check-certificate -q " url"/"$2; 
exit
}'
$ ls 
curl-8.0.1.tar.gz

相关内容

  • 没有找到相关文章

最新更新