Вопрос

У меня есть сценарий bash, который запрашивает ввод у пользователя «read». Если stdout или stderr передаются по каналу, отличному от терминала, я бы хотел отменить этот шаг. Это возможно?

Это было полезно?

Решение

Вы можете проверить, является ли файловый дескриптор tty (подключенным к терминалу), с помощью команды test -t < filedescriptor №. > ;. Если это так, вы можете подсказать пользователю. Если это не так, выход, вероятно, передается по каналу или перенаправляется куда-то.

if test -t 1  ; then
  echo stdout is a tty
fi
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top