Como o 'echo' funciona neste contexto? 'externalip () {curl http://ipecho.net/plain; eco; } '

3

Enquanto procurava por uma simples função bash que ecoa meu endereço IP externo, me deparei com esta postagem , que tinha o seguinte exemplo:

function ext-ip () { curl http://ipecho.net/plain; echo; }

Eu estou querendo saber como echo funciona neste contexto; Nem as% man_de% nem as curl manpages foram muito úteis. Por que ecoa o corpo de resposta do comando anterior echo ? E existe alguma vantagem em fazer deste modo em oposição a, e. %código%? Só estou perguntando porque a sintaxe do último parece mais transparente / direta.

    
por 3cheesewheel 23.01.2014 / 19:36

1 resposta

7

Why does it echo the response body of the previous curl command?

Uma pergunta carregada clássica .

Não faz nada disso. O comando curl gera um endereço IP sem uma nova linha à direita. O comando echo fornece a nova linha. É simples assim.

Se

echo "$(curl -s http://ipecho.net/plain)"

é mais simples que

curl http://ipecho.net/plain ; echo

é uma questão de gosto até certo ponto. Vale a pena notar, no entanto, que $() não está disponível no shell Bourne (não deve ser confundido com o Bourne Again) nem nos shells C, enquanto que praticamente todos os shells podem executar dois comandos simples em sequência separados por um semi cólon. Isso inclui até csh e fish . ☺

    
por 23.01.2014 / 19:53