Shell wget";缺少URL“;

Shell wget";缺少URL“;,shell,Shell,我只是查找“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:

我只是查找“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.

就我所见,您正在尝试匹配完整的URL,而页面只包含相对的HREF。以下是一个示例:

<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>
其中:

grep 'class="download"'
将找到所有作为下载链接的行(如果您相信页面的格式比较稳定,可以跳过此步骤)

将行读取为双引号分隔的字段,并打印第6个字段,该字段恰好是相对href;及

sed  's/^/https\:\/\/golang\.org/')"

这将作为站点的前缀,因此您最终会得到一个完整的URL。当然,如果站点发生更改,这将失败,因此您可能希望使用一个变量来存储站点,然后在wget查询和sed查询中使用该变量。。。。但是Web抓取有这些怪癖。

wget
根本不是问题所在!这就好比说,在没有拧紧车轮固定螺栓后,道路的弯曲是问题所在。
awk -F "\"" '{print $6}'
sed  's/^/https\:\/\/golang\.org/')"