bash script: uma maneira mais elegante de recuperar a versão mais atual do go?

0

> Advertência : Essa pequena linha e a pergunta aqui são para fins de aprendizado, pois percebo que eu poderia "apenas abrir um navegador".

A menos que eu esteja enganado, o Google não oferece uma maneira amigável de fazer o script para baixar a versão mais recente do golang. Os scripts que eu vi (como este gist ) ainda exigem que você saiba e insira manualmente o número da versão go.

Meu objetivo era ver se eu poderia recuperar automaticamente a versão mais recente sem consultá-la.

Minha solução funciona, mas eu adoraria aprender de uma maneira mais enxuta e clara:

GOURL=$(curl https://golang.org/dl/ 2>&1 | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | awk '/tar.gz/' | awk NR==1)
Em poucas palavras, ele obtém todos os links da página de download do golang, limpa os URLs para manter apenas os tar.gz e, finalmente, mantém a primeira linha da saída, que é o link exato que eu precisaria. Neste momento: seria para go.1.8.3 .

Mais uma vez, isso é para fins de aprendizado. Obrigado pelo seu tempo.

EDIT: Eu 'aceitei' sugestão do GMaster como a resposta, pois melhorou a minha solução sem ferramentas adicionais. Sou grato a outros comentaristas, no entanto, por me ajudarem a descobrir ferramentas extras. Apesar de ansiosamente ansiar por possíveis acréscimos no futuro, achei melhor encerrar isso já que meu pedido foi amplamente abordado.

    
por Farhang 01.06.2017 / 07:54

2 respostas

1

Se você olhar a página link , verá as versões mais recentes em "Downloads em destaque". Agora, supondo que o Google não altere a estrutura html da página, essa é uma versão mais limpa

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

Elegância é principalmente subjetiva. A maneira fácil de ficar de olho nos lançamentos do Go é definir um relógio na página lançamentos no GitHub ou apenas adicionar feed relevante para seus feeds de notícias (supondo que você esteja usando feeds RSS, ou seja).

Mas se você precisar de um comando que pareça mais inteligente do que curl + grep , aqui está um usando Xidel :

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

Aqui xidel extrai o URL relevante da página de download usando XPath e, em seguida, curl faz o download. Provavelmente é um exagero, mas xidel pode ser útil para outras tarefas.

    
por 01.06.2017 / 08:52