我一直在移植一堆脚本操作系统7.1。我之前没有使用过这个 Unix 系统的经验。
脚本在 和 下运行并/bin/sh
依赖于和/dev/stdout
。众所周知,这些文件是非标准化的,并且/dev/stdin
/dev/stderr
操作系统7.1似乎没有实施它们。
由于我发现/proc
VFS 存在,所以我尝试/dev/std{in|out|err}
用/proc/$$/fd/{0|1|2}
.这失败了,因为描述符不是链接到pts
具有权限的真实字符文件设备000( c---------
)。
/bin/bash
众所周知,它可以模拟许多设备,/dev
包括/dev/std*
.我关于切换和使用的有限实验/bin/bash
是/bin/sh
成功/dev/std*
的。然而,切换和测试所有脚本将/bin/bash
非常耗时。
问题:
如何处理标准IO文件操作系统7.1在下面/bin/sh
?正在雇用例如。/dev/tty
道路?
// 要移植的脚本之一中的调用示例:
# param_protocol parameter apparently needs a file representation of the stdout
black_box_binary param1=$value1 param2=$value2 param_protocol=/dev/stdout
答案1
您可以通过读取<&0
和写入>&1
和来替换这些文件>&2
,即。分别是 stdin、stdout 和 stderr。
答案2
这些文件可能/dev/std{in,out,err}
只是符号链接吗/proc/$$/fd/{0,1,2}
?看 ”标准错误和其他输出重定向”了解背景信息。但是,根据此处的前一个帖子,“> /dev/stdout” 的可移植性似乎依赖于外壳。