警告:這個小 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 的下載頁面獲取所有鏈接,清理 URL 以僅保留 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'到目前目錄。