警告:这个小 bash 行和这里的问题都是出于学习目的,因为我意识到我可以“只需打开浏览器”。
如果我没记错的话,Google 并没有提供脚本友好的方式来下载最新版本的 golang。我见过的脚本(比如这个要旨)仍然需要你知道并手动输入go版本号。
我的目标是想看看我是否可以自动检索最新版本而无需查找。
我的解决方案确实有效,但我很想学习一种更精简、更干净的方法:
GOURL=$(curl https://golang.org/dl/ 2>&1 | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | awk '/tar.gz/' | awk NR==1)
简而言之,它从 golang 的下载页面获取所有链接,清理网址以仅保留 tar.gz 的网址,最后保留输出的第一行,这正是我需要的链接。现在:这将是为了去.1.8.3。
再次强调,这是出于学习目的。谢谢你的时间。
编辑:我接受'GMaster的建议作为答案,因为它在没有额外工具的情况下改进了我的解决方案。不过,我很感谢其他评论者帮助我发现额外的工具。尽管我热切地期待着将来任何可能的补充,但我认为最好关闭它,因为我的请求已得到充分解决。
答案1
如果你看一下https://golang.org/dl/页面,您将在精选下载中看到最新版本。现在,假设 Google 不更改页面的 html 结构,这是一个更干净的版本
GOURL=$(curl -s https://golang.org/dl/ | grep 'download.*downloadBox' | grep -o 'https.*linux.*gz')
答案2
答案3
不需要 Bash 脚本。xidel
这就是解析 golang 网站所需的一切。如果您想下载文件,
则不需要任何一个。curl
提取最新 golang 源代码的 url:
$ xidel -s "https://golang.org/dl" -e '//a[div="Source"]/resolve-uri(@href)'
#or
$ xidel -s "https://golang.org/dl" -e 'resolve-uri(//tr[td="Source"]/td/a/@href[1])'
https://golang.org/dl/go1.16.5.src.tar.gz
您当然可以使用以下网址下载此网址curl
...
$ curl -LO "$(xidel -s "https://golang.org/dl" -e '//a[div="Source"]/resolve-uri(@href)')"
...但xidel
也可以这样做...
$ xidel -s "https://golang.org/dl" -f '//a[div="Source"]/resolve-uri(@href)' --download '.'
...下载的内容'go1.16.5.src.tar.gz'到当前目录。