如果创建了新的输入或输出文件描述符,shell会在脚本退出时自动关闭它们。然而在有些情况下,需要在脚本结束前手动关闭文件描述符。
要关闭文件描述符,将它重定向到特殊符号&-。脚本中看起来如下:
exec 3>&-
该语句会关闭文件描述符3,不再在脚本中使用它。这里有个例子来说明当你尝试使用已关闭的文件描述符时会怎样。
$ cat badtest
#!/bin/bash
# testing closing file descriptors
exec 3> test17file
echo "This is a test line of data" >&3
exec 3>&-
echo "This won't work" >&3
$ ./badtest
./badtest: 3: Bad file descriptor
$
一旦关闭了文件描述符,就不能在脚本中向它写入任何数据,否则shell会生成错误消息。