2

Я хотел бы захватить вывод подоболочки в переменную и одновременно распечатать его на экране терминала. Можно ли сделать это, назначив подоболочку переменной и отправив в нее stdout и stderr? Следующий скрипт не работает.

$ cat test
#!/bin/bash

echo "Command before the redirected subshell"
OP=$(
    echo "Command in the redirected subshell 1"
    echo "Command in the redirected subshell 2"
    echo "Error in the redirected subshell" > /dev/stderr
    ) 2>&1 | tee /dev/tty
echo "Command after the redirected subshell"
echo "OP=$OP"

В подоболочке нет вывода команд (кроме перенаправленного на stderr), и $ OP представляется строкой нулевой длины.

Спасибо за любую идею!

1 ответ1

4

Попробуй это:

op=$( (cmd1; cmd2; ... ; cmdN) | tee /dev/tty )

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .