Подстановка команд в bash против вызова функции

#bash #function #testing #bats-core

Вопрос:

Я пишу сценарий оболочки из книги, и есть пример, в котором я создаю функцию и вызываю эту функцию позже $(function_name) .

Но, насколько я знаю, я могу вызвать функцию, просто написав ее имя. Итак, в чем разница между вызовом функции с ее именем и с $(function_name) ?

Комментарии:

1. $( ) захватывает выходные данные команды (может быть функцией, обычной командой, составной командой, такой как конвейер или что-то еще) и использует ее как часть другой команды. См. Этот вопрос о Unix и Linux .

Ответ №1:

$(...) называется подстановкой команд.

Проще говоря, function_name распечатает вывод, готово.

$(function_name) вывод функции станет частью (обычно в качестве аргумента) в качестве новой команды, которая будет выполнена.

 echo "ls"  #<--- assume this is the function
 

Откройте терминал и попробуйте, вы поймете это лучше:

 echo "ls"
 

и

 $(echo "ls")