Como passar o resultado do curl como parâmetro

1

Eu tenho um aplicativo da web que simplesmente retorna um endereço IP. Eu quero passar esse resultado de IP para outro script de lote que dispara um aplicativo que deve se conectar a esse endereço IP.

Aqui está o meu teste:

curl http://silvo.uk.to/IPReg.dll/GetIP | bash starttelem2.sh

Para testes, o starttelem2.sh contém apenas:

#!/bin/sh
echo "THE IP IS " $1

No entanto, quando eu chamo a curva acima com pipe, recebo o que parece ser o progresso do download de curl.

Como posso simplesmente passar o resultado da chamada curl para o meu script bash?

    
por Hein du Plessis 07.09.2016 / 20:44

1 resposta

1

Como você usou o parâmetro posicional (argumento) 1 ( $1 ) dentro do script, use a substituição de comando para passar o endereço IP de curl como o primeiro argumento:

bash starttelem2.sh "$(curl -s http://silvo.uk.to/IPReg.dll/GetIP)"

$(curl -s http://silvo.uk.to/IPReg.dll/GetIP) é a substituição de comando, que será substituída pela saída padrão do comando curl . A opção -s faz com que curl não mostre informações de progresso no STDERR.

Observe que você usou o shebang como sh , mas executou o script como um argumento para bash , já que bash é um superconjunto de sh , você deve considerar fazer o shebang como bash também , se você não tem nenhum motivo específico para não.

    
por 07.09.2016 / 20:46