web-dev-qa-db-ja.com

このコンテキストで `echo`はどのように機能しますか?:` externalip(){curl http://ipecho.net/plain;エコー; } `

外部IPアドレスをエコーする単純なbash関数を検索しているときに、 この投稿 に遭遇しました。これには次の例があります。

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

このコンテキストでechoがどのように機能するのか疑問に思います。 curlechoのマンページもあまり役に立ちませんでした。前のcurlコマンドの応答本文をエコーするのはなぜですか?そして、例えば、この方法とは対照的に、この方法で行うことに利点はありますか? echo "$(curl -s http://ipecho.net/plain)"?後者の構文はより透過的/単純に見えるので、私は尋ねているだけです。

3
3cheesewheel

前のcurlコマンドの応答本文をエコーするのはなぜですか?

古典的な質問の誤謬

それはそのようなことをしません。 curlコマンドは、末尾に改行を付けずにIPアドレスを出力します。 echoコマンドは改行を提供します。とても簡単です。

かどうか

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

よりも簡単です

_curl http://ipecho.net/plain ; echo
_

ある程度好みの問題です。ただし、$()はBourne(Bourne Againと混同しないでください)シェルでもCシェルでも使用できないのに対し、ほとんどすべてのシェルは2つのプレーンコマンドを順番に分離して実行できることに注意してください。セミコロンで。これには、cshfishも含まれます。 ☺

7
JdeBP