3

При поиске простой функции bash, отражающей мой внешний IP-адрес, я наткнулся на этот пост, в котором был следующий пример:

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

Мне интересно, как echo работает в этом контексте; ни curl ни echo не были очень полезными. Почему это повторяет тело ответа предыдущей команды curl? И есть ли какое-либо преимущество в этом способе, например, echo "$(curl -s http://ipecho.net/plain)"? Я только спрашиваю, потому что синтаксис последнего кажется более прозрачным / прямым.

1 ответ1

7

Почему это повторяет тело ответа предыдущей команды curl ?

Классический загруженный вопрос.

Это не делает ничего подобного. Команда curl выводит IP-адрес без завершающей строки. Команда echo предоставляет новую строку. Это так просто.

Будь то

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

является более простым, чем

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

это вопрос вкуса в некоторой степени. Однако стоит отметить, что $() недоступно ни в оболочке Bourne (не путать с Bourne Again), ни в оболочках C, тогда как практически все оболочки могут выполнять две простые команды в последовательности, разделенной двоеточие. Это даже включает в себя csh и fish . ☺

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .