Unindo duas partes juntas para criar um único script

1

Estou tentando criar um script para fazer o seguinte: extraia o link magnético de um marcador de lince e use-o como parte de um comando curl. assim:

curl http://my_ip:my_port_number/startdownload/magnet_link

Eu tenho o seguinte para obter o link do ímã:

lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-

Mas não tenho certeza de como juntar as duas partes para criar um único script.

Posso ter algumas sugestões, por favor?

BTW, eu sou um amador total nisso e tenho certeza de que até o que pode ser melhorado.

    
por Phil 09.02.2016 / 20:08

3 respostas

1

Então, o que você precisa é capturar a saída de um comando e usá-lo em outro. A sintaxe bash $ (..) permitirá que você execute um comando e capture a saída, então você pode usar essa saída em outro comando.

Uma maneira é capturar a saída em uma variável, como:

shortcut=$(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep magnet | sed 's/&.*//' | cut -c 7-)
curl "$shortcut"

Ou você pode usar a saída diretamente:

curl $(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-)

Qual você escolhe depende de sua preferência. Se você precisar usar a saída do comando mais de uma vez, então é uma boa idéia capturar a saída em uma variável e usá-la a partir daí.

    
por 09.02.2016 / 21:11
1

coloque as seguintes linhas em um arquivo de script, tal anúncio mydownload.sh

magnet=$(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-)
curl http://my_ip:my_port_number/startdownload/${magnet}

salve e saia

chmod 755 mydownload.sh
./mydownload.sh
    
por 09.02.2016 / 21:11
0
bash-4.1$ echo $( echo hi )
hi
bash-4.1$ 

Então,

curl $( ... )

Passaria a saída de qualquer ... para curl executando todos os comandos que são como um subnível. $() também pode ser escrito com backticks, embora esses sejam cabeçalhos para serem lidos e não sejam aninhados.

grep | sed provavelmente pode ser substituído por uma única chamada para awk .

    
por 09.02.2016 / 20:15