Проверьте, является ли stderr трубой в bash - PullRequest
8 голосов
/ 30 июля 2009

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

1 Ответ

16 голосов
/ 30 июля 2009

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

if test -t 1  ; then
  echo stdout is a tty
fi
...