我试图使用进程替换并遇到以下示例:
exec 3>&1
tar cf /dev/fd/4 $directory_name 4>&1 >&3 3>&- | bzip2 -c > file.tar.bz2 3>&-
exec 3>&-
根据我的理解,这意味着以下内容:
创建文件描述符
3
并将其附加到标准输出。tar
将压缩由定义的目录中的文件,压缩文件在$directory_name
内部由文件描述符表示4
。文件描述符
4
附加到标准输出。stdout 附加到文件描述符
3
和文件描述符3
关闭。
但是再次在bzip2
文件描述符中再次关闭并且在最后一行exec
命令中也关闭描述符3
。我迷路了,为什么同一个文件描述符被关闭了 3 次?