Как получить stdout в переменную и одновременно выводить stdout

{ var="$( ls / | tee >(cat - >&2) )"; } 2>&1; echo -e "*** var=$var"


Эта команда выполняет следующее:

1. ls /: Выводит список файлов и каталогов в корневом каталоге.
2. tee >(cat - >&2): Позволяет записать вывод команды ls / в переменную var и одновременно вывести его на стандартный вывод (stdout).
3. { var="$(...) } 2>&1: Захватывает вывод, который идет на stderr, и сохраняет его в переменной var.
4. echo -e "*** var=$var": Выводит сообщение с содержимым переменной var.

Альтернатива: Вы можете использовать команду var=$(ls /) для сохранения вывода в переменную без одновременного вывода на stdout и stderr.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *