Bash

bash 腳本:一種更優雅的方式來檢索最新版本的 go?

  • June 5, 2021

警告:這條小 bash 行和這裡的問題都是出於學習目的,因為我意識到我可以“只打開一個瀏覽器”。

除非我弄錯了,否則 Google 不提供腳本友好的方式來下載最新版本的 golang。我見過的腳本(比如這個gist)仍然需要你知道並手動輸入 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 的連結,最後保留輸出的第一行,這是我需要的確切連結。現在:它將用於go.1.8.3

再次,這是出於學習目的。謝謝你的時間。

***編輯:***我“接受”了 GMaster 的建議作為答案,因為它改進了我的解決方案而沒有額外的工具。我感謝其他評論者幫助我發現額外的工具。儘管我熱切期待未來可能的任何添加,但我認為最好關閉它,因為我的請求得到了充分解決。

如果您查看https://golang.org/dl/頁面,您會看到最新版本位於精選下載中。現在,假設Google不改變頁面的html結構,這是一個更乾淨的版本

GOURL=$(curl -s https://golang.org/dl/ | grep 'download.*downloadBox' | grep -o 'https.*linux.*gz')

優雅主要是主觀的。關注 Go 發布的簡單方法是在 GitHub 的發布頁面上設置監視,或者只是將相關的提要添加到您的新聞提要中(假設您使用的是 RSS 提要)。

但是如果你必須有一個看起來比curl+更聰明的命令grep,這裡有一個使用Xidel的命令:

{ echo -n url=; xidel https://golang.org/dl/ -s -e '//a[./div="Source"]/@href'; } | \
   curl -s -S -O -K -

這裡xidel使用 XPath 從下載頁面中提取相關 URL,然後進行curl下載。在這裡可能有點矯枉過正,但xidel對於其他任務可能會派上用場。

引用自:https://unix.stackexchange.com/questions/368481