我只是简单地查找最新版本的"go“,并将其存储在URL路径中。
url="$(wget -qO- https://golang.org/dl/ | grep -oP 'https:\/\/dl\.google\.com\/go\/go([0-9\.]+)\.linux-amd64\.tar\.gz' | head -n 1 )"当我回音时,输出是空的。另外,当我尝试像这样下载这个文件时:
wget ${url}我收到以下错误消息:
wget: missing URL
Usage: wget [OPTION]... [URL]...
Try `wget --help' for more options.发布于 2021-04-22 03:58:21
据我所见,您正在尝试匹配完整的URL,并且该页面只包含相对的hrefs。下面是一个例子:
<tr>
<td class="filename"><a class="download" href="/dl/go1.3rc1.linux-386.tar.gz">go1.3rc1.linux-386.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>x86</td>
<td></td>
<td><tt>07c656173c444e4373a799141c1cb28128a345eb</tt></td>
</tr>从上面可以看到,下载的href不包含完整的路径。因此,如果要匹配相对路径,可以这样做:
url="$(wget -qO- https://golang.org/dl/ | grep 'class="download"'| awk -F "\"" '{print $6}' | head -n1 | sed 's/^/https\:\/\/golang\.org/')"其中:
grep 'class="download"'将找到下载链接的所有行(如果您相信该页面具有相当稳定的格式,则可以跳过此步骤)。
awk -F "\"" '{print $6}'以双引号分隔字段的形式读取行,并打印第6个字段,该字段恰好是相对的href;
sed 's/^/https\:\/\/golang\.org/')"这是网站的前缀,因此您将得到一个完整的URL。当然,如果站点更改,这将失败,因此您可能需要使用一个变量来存储站点,然后在wget查询和sed查询中使用该变量.但是网络刮也有这种怪癖。
https://stackoverflow.com/questions/67206072
复制相似问题