Распечатайте сообщение с левой стороны канала

можно использовать, найдите, посмотрите ниже примера

find /var/www/ -type d -exec chmod g+s {} \;
3
17.10.2014, 12:50
3 ответа

Если Ваша система/оболочка поддерживает его, можно использовать перенаправление и обработать замену для вывода материала к различным дескрипторам файлов. Например:

(
    echo "This goes to fd 1"
    echo "This goes to fd 3" >&3
) 3> /dev/tty | some command

В этом примере первый оператор эха отправляется в some command, в то время как второе отправляется на терминал.

(
    echo "This goes to fd 1"
    echo "This goes to fd 3" >&3
) 3> >(some command)

В этом случае первый оператор эха переходит в stdout, и второй оператор эха переходит в some command.

3
27.01.2020, 21:14

Вы могли (и вероятно должен) печатать Ваши сообщения отладки на потоке стандартной погрешности сценария вместо его стандартного вывода. Стандартная погрешность не проходит канал, таким образом, все хорошо.

(
    echo >&2 "$mysql_root_password"
) | dialog --gauge "Working hard..." 6 50

При реальной необходимости в сообщении на стандартном выводе сценария можно открыть дополнительный дескриптор файла, это подключено к стандартному выводу сценария, и перенаправьте сообщение к тому дескриптору файла.

{
  (
      echo >&3 "$mysql_root_password"
  ) | dialog --gauge "Working hard..." 6 50
} 3>&1

Для получения дополнительной информации посмотрите при использовании дополнительного дескриптора файла? и сообщения это связывается с.

2
27.01.2020, 21:14

Вы могли повторить значение mysql_root_password к stderr, при наблюдении, что значение является только диагностикой:

echo $mysql_root_password >&2

Вы могли также, возможно, использовать tee:

export mysql_root_password="test"
(
    echo $mysql_root_password
) | tee /dev/tty | dialog --gauge "Working hard..." 6 50

Я смущаюсь рекомендовать tee поскольку иногда это (или каналы) делает буферизацию, которая заставляет вывод быть менее, чем полезным.

1
27.01.2020, 21:14

Теги

Похожие вопросы