оператор `-t` для команды` test` неправильно идентифицирует файловые дескрипторы не-tty - PullRequest
1 голос
/ 27 сентября 2019

В bash / ksh / dash:

$ input_redirected() { [[ -t 0 ]] && echo input is not redirected || echo input is redirected; }
$ input_redirected foo
input is not redirected
$ input_redirected < /dev/null
input is redirected
$ cat /etc/passwd | input_redirected
input is redirected

в рыбе

$ function input_redirected; test -t 0; and echo not redirected; or echo redirected; end
$ input_redirected foo
not redirected
$ input_redirected < /dev/null
not redirected
$ cat /etc/passwd | input_redirected
not redirected

Однако использование isatty 0 вместо test -t 0 дает ожидаемый результат.

Что такое test -t FD проверка, выполняемая на рыбе, которая не ведет себя так же, как оболочка POSIX-типа?

1 Ответ

1 голос
/ 27 сентября 2019

Это ошибка: https://github.com/fish-shell/fish-shell/issues/1228

Обходной путь должен использовать command test, что также делает isatty - см. type isatty.

...