Проверьте, является ли stderr трубой в bash
Вопрос
У меня есть сценарий bash, который запрашивает ввод у пользователя «read». Если stdout или stderr передаются по каналу, отличному от терминала, я бы хотел отменить этот шаг. Это возможно?
Решение
Вы можете проверить, является ли файловый дескриптор tty (подключенным к терминалу), с помощью команды test -t < filedescriptor №. > ;. Если это так, вы можете подсказать пользователю. Если это не так, выход, вероятно, передается по каналу или перенаправляется куда-то.
if test -t 1 ; then
echo stdout is a tty
fi
Не связан с StackOverflow