bashスクリプト:最新バージョンのgoを検索するよりエレガントな方法は何ですか?

bashスクリプト:最新バージョンのgoを検索するよりエレガントな方法は何ですか?

警告する:この小さなbashラインとここの質問は両方学習目的のためです。 「ただブラウザを開くと」なることに気づいたからです。

私の記憶が正しい場合、Googleは最新バージョンのgolanをダウンロードするためのスクリプトフレンドリーな方法を提供しません。私が見たスクリプト(これと同じです。ポイント)まだ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のURLのみを維持し、最後に出力の最初の行を維持します。これが私が必要なリンクです。今:これGo.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

エレガンスは主に主観的です。 Goバージョンをたどる簡単な方法は次のとおりです。解放するGitHubページまたは追加関連フィードニュースフィードに追加します(RSSフィードを使用していると仮定)。

curlただし、+よりスマートに見えるコマンドが必要な場合は、grep以下を使用してください。ヒデル:

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

ここで、XPathはxidelダウンロードページから関連URLを抽出してダウンロードするcurlために使用されます。ここでは少し過剰になるかもしれませんが、xidel他の作業には役に立ちます。

答え3

Bashスクリプトは必要ありません。xidelこれはゴランのウェブサイトを解析するために必要なすべてです。ファイルをダウンロードしたい場合
でも必要ありません。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

もちろん、次のURLを使用してダウンロードできます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'現在のディレクトリに。

関連情報