在这种情况下,“echo”如何工作?:`externalip() { curl http://ipecho.net/plain; echo; }`

在这种情况下,“echo”如何工作?:`externalip() { curl http://ipecho.net/plain; echo; }`

在寻找一个可以响应我的外部 IP 地址的简单 bash 函数时,我偶然发现了这个帖子,其示例如下:

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

我想知道echo在这种情况下如何工作;curlecho手册页都没有什么帮助。为什么它会回显前一个curl命令的响应主体?与例如相比,这样做有什么好处吗echo "$(curl -s http://ipecho.net/plain)"?我问这个问题只是因为后者的语法似乎更透明/直接。

答案1

为什么它会回显前一个命令的响应主体curl

经典引导性问题

它不会做任何这样的事情。该curl命令输出一个没有尾随换行符的 IP 地址。该echo命令提供换行符。就这么简单。

无论

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

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

在某种程度上,这只是个人喜好问题。但值得注意的是,$()Bourne(不要与 Bourne Again 混淆)shell 和 C shell 中均不支持该功能,而几乎所有 shell 都可以按顺序执行两个由分号分隔的普通命令。甚至包括cshfish。☺

相关内容