{ 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.