Como armazenar o conteúdo da classe html na variável shell

1

Eu tenho tentado fazer um script e neste script eu gostaria de atualizar o nome da pasta e um monte de outras coisas usando uma variável.

a pasta que eu crio será chamada de o nome da versão mais recente que ela tem no github.

#!/bin/sh
content=$(curl -s -L https://github.com/FAForever/client/releases)
fl=tr '\n' ' ' < $content | grep -E "^<div class=\"release-title\">.*</div>$"
echo $fl



#!/bin/sh
s=$(curl -s https://github.com/FAForever/client/releases | grep "div class='release-title'")
echo "$s"

Eu procurei em toda a web por isso e ninguém fez essa configuração específica (fonte curl / output shell var)

todos têm algum tipo de entrada ou saída de arquivo ou outro e não posso fazer uso de suas soluções.

qual é a sintaxe correta no shell para capturar apenas um conteúdo de classe e armazená-lo em uma variável shell?

Obrigado.

    
por tatsu 21.12.2016 / 19:05

2 respostas

1

o link do github API retorna o json, que pode ser muito bem processado com a ferramenta de linha de comando jq

O que você precisa? uma lista de lançamentos? ... tente isso

curl https://api.github.com/repos/FAForever/client/releases | jq .[].tag_name

que lhe dá saída

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  107k  100  107k    0     0   314k      0 --:--:-- --:--:-- --:--:--  314k
"0.12.0-pre2"
"0.12.0-pre1"
"0.11.60-p1"
"0.11.61-pre2"
"0.11.61-pre"
"0.11.60"
"0.11.59-pre"
"0.11.58"
"0.11.57"
"0.11.55"
"0.11.54"
"0.11.53"
"0.11.52"
"0.11.51"
"0.11.50"
"0.11.49"
"0.11.47"
"0.11.16+291"
"0.11.14"
"0.11.8+270"
"0.11.7+267"
"0.11.3+247"
"0.11.0"
"0.10.125"
"0.10.124"
"0.10.123"
"0.10.124-pre"
"0.10.123-pre"
"0.11-pre-3"
"0.11-pre-2"

se você disser "Apenas mostre-me o mais recente", em seguida, edite

sudo apt-get install jq

curl --silent  https://api.github.com/repos/FAForever/client/releases | jq .[].tag_name|sort -n|tail -1

com saída

"0.12.0-pre2"

agora para agrupar em um script de shell vi show_latest.sh

#!/bin/bash

latest_release=$(curl --silent  https://api.github.com/repos/FAForever/client/releases | jq .[].tag_name|sort -n|tail -1)

echo latest_release $latest_release

que gera saída

latest_release "0.12.0-pre2"
    
por Scott Stensland 21.12.2016 / 19:35
1

O mesmo que a resposta de Scott, mas use o Python.

curl https://api.github.com/repos/FAForever/client/releases | python -c 'import sys,json; print "\n".join(map(lambda x: x["tag_name"],json.load(sys.stdin)))'
    
por Sam Gleske 17.01.2017 / 08:00