在 Linux 上,有没有办法让 shell 脚本检查其标准输入是否从空设备 (1, 3) *重定向,理想情况下不读取任何内容?
预期的行为是:
./checkstdinnull
-> no
./checkstdinnull < /dev/null
-> yes
echo -n | ./checkstdinnull
-> no
EDIT
mknod secretunknownname c 1 3
exec 6<secretunknownname
rm secretunknownname
./checkstdinnull <&6
-> yes
Run Code Online (Sandbox Code Playgroud)
我怀疑我“只”需要读取输入设备的主要/分钟数。但是我找不到从 shell 中做到这一点的方法。
/dev/null,但任何空设备,即使手动创建mknod。 我知道/dev/tcp/<host>/<port>是由重定向中的某些 shell 专门处理的魔术路径。但根据man bash:
如果运行 bash 的操作系统提供这些特殊文件,bash 将使用它们;否则它会在内部模拟它们 [...]
在我现在使用的 Linux 机器上,/dev/tcp特殊文件不存在,因此 Bash 将模拟它。但是,实际上是否有一种类 Unix 系统确实提供了/dev/tcp与 Bash 支持的具有相同语义的特殊文件?