fish - `test` 命令的 `-t` 运算符不能正确识别非 tty 文件描述符
问题描述
在 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 类型的 shell 不同?
解决方案
这是一个错误:https ://github.com/fish-shell/fish-shell/issues/1228
解决方法是使用command test
,这也是isatty
所见所闻type isatty
。
推荐阅读
- flutter - Flutter - 上传 csv 文件
- firebase - Firebase 存储工件巨大且不断增加
- aws-lambda - 在 lambda 函数中存储和访问数据文件
- php - 在 Laravel 中从数据库中删除图像的问题
- reactjs - Redux 我应该如何处理 API 调用的更新
- c# - 如何通过两个属性 DC=intechww,DC=com 为 LDAP 创建连接字符串
- python - Django Jinja 输出列表的第一个元素,然后从第二个开始循环
- c# - EF Core 迁移从新的复合索引中删除第一个外键索引
- angular - How to update the configuration for eslint after upgrade angular 9 to 10
- bash - Assign value to a variable 'during' command - bash