Подстановка команд
Другой вариант - использовать подстановку команд . Перенос команды в $()
запустит команду и заменит команду ее выводом.
cat $(find ./inhere -size 1033c 2> /dev/null)
станет
cat ./inhere/file1 .inhere/file3
Это более или менее эквивалентно использованию более старого стиля переноса команд с обратными галочками:
cat `find ./inhere -size 1033c 2> /dev/null`
Более подробная информация из документов, связанных выше
Bash выполняет расширение, выполняя команду в среде подоболочек и заменяя подстановку команды стандартным выводом команды, удаляя все завершающие символы новой строки. Введенные новые строки не удаляются, но они могут быть удалены во время разделения слов. Подстановка команд $(cat file)
может быть заменена эквивалентной, но более быстрой $(< file)
.
Когда старый стиль форма кавычки замещения используются, обратный слеш сохраняет свое буквальное значение , за исключением , когда следует $
, `
или \
. Первая обратная кавычка, которой не предшествует обратная косая черта, завершает подстановку команды. При использовании $(command)
формы все символы в скобках составляют команду; никто не лечится специально.
Подстановки команд могут быть вложенными. Чтобы вкладывать при использовании формы с обратными кавычками, избегайте внутренних обратных кавычек с помощью обратной косой черты.
Если подстановка встречается в двойных кавычках, разделение слов и расширение имени файла не выполняются.
Посмотрите этот другой ответ для некоторых хороших примеров использования.