如何解决在后续的bash命令中使用新的文件描述符
我正在尝试遵循bash advanced scripting guide并使用其他(输出)文件描述符。我正在跑步:
3>/tmp/foo
echo hello >&3
但我没有将错误“ hello”放到/tmp/foo
中,而是得到了错误:
bash: 3: Bad file descriptor
那是为什么?
注意:万一重要,我正在使用bash 4.4。
解决方法
似乎您必须说exec
才能使文件描述符创建应用于后续命令。所以,这:
exec 3>/tmp/foo
echo hello >&3
不会给出错误消息。但是,正如@Inian所建议的那样,这是不好的编码习惯。相反,您应该使用以下命令bash打开最小的可用新文件描述符:
exec {my_new_fd}>/tmp/foo
echo hello >&${my_new_fd}
通过这种方式,您可以确定您不在其他人的文件描述符上进行交易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。