Здесь есть несколько разных ссылок на «входные данные», поэтому я приведу несколько сценариев с пониманием этого в первую очередь. Для быстрого ответа на вопрос в кратчайшей форме :
stat testfile < <($1)> outputfile
Вышеприведенное будет выполнять статистику для тестового файла, принимать (перенаправлять) его STDOUT и включать его в следующую специальную функцию (часть <()), а затем выводить окончательные результаты, что бы это ни было, в новый файл (выходной файл). Файл вызывается, затем на него ссылаются встроенные команды bash ($ 1 каждый раз после, пока вы не начнете новый набор инструкций).
Ваш вопрос великолепен, и есть несколько ответов и способов сделать это, но он действительно меняется в зависимости от того, что вы делаете конкретно.
Например, вы можете зациклить это, что довольно удобно. Обычное использование этого в псевдо-коде мышления:
run program < <($output_from_program)> my_own.log
Принимая это и расширяя эти знания, вы можете создавать такие вещи, как:
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
Это выполнит простую команду ls -A в вашем текущем каталоге, а затем покажет цикл в цикле по каждому результату от ls -A до (и здесь это сложно!) Grep «thatword» в каждом из этих результатов и выполнит только предыдущий printf (красным), если он действительно обнаружил файл с этим словом. Он также запишет результаты grep в новый текстовый файл files_that_matched_thatword.
Пример вывода:
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
index.html
Все это просто напечатало результат ls -A, ничего особенного. На этот раз добавьте что-нибудь для grep:
echo "thatword" >> newfile
Теперь перезапустите это:
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
files_that_matched_thatword index.html newfile
Found a file: newfile:thatword
Хотя, возможно, более утомительный ответ, чем вы ищете в настоящее время, я считаю, что хранение таких удобных заметок принесет вам гораздо больше пользы в будущих начинаниях.
<(ввод из файла на левую сторону) или|(ввод из потока на правую сторону). Есть разница