使用文件描述符fd

时间:2019-04-16 23:59:05  来源:igfitidea点击:

文件描述符0、1和2分别保留给stdin、stdout和stderr。
但是,bash shell允许您将文件描述符分配给输入文件或输出文件。这样做是为了提高文件的读写性能。这称为用户自定义的文件描述符。

将文件描述符(fd)分配给文件进行输入

将文件描述符分配给输入文件,使用以下语法:

exec fd< input.txt

fd 需要大于等于3

示例

#!/bin/bash
# 为输入文件分配文件描述符
exec 3< /etc/resolv.conf
 
# 执行cat命令并从文件描述符3中读取输入 即从文件/etc/resolv.conf中读取
cat <&3
 
# 关闭文件
exec 3<&-

将文件描述符(fd)分配给文件进行输出

可以使用以下语法将文件描述符分配到输出文件:

语法

exec fd> output.txt

fd 需要大于等于3

示例

#!/bin/bash
# 为输出文件分配文件描述符
# 文件描述符3 对应output.txt
exec 3> /tmp/output.txt

# 执行echo命令并将输出发送到文件描述符3 即将结果写入/tmp/output.txt
echo "This is a test" >&3

# 将date命令的输入写入到 fd # 3
date >&3

# 关闭3号文件描述符
exec 3<&-

shell关闭文件描述符(fd)

语法:

exec fd<&-