Bash &引用;“错误的文件描述符”;从指向临时文件的FD 3读取时

Bash &引用;“错误的文件描述符”;从指向临时文件的FD 3读取时,bash,Bash,我的问题是从中得到启发的 以脚本为例: tmpfile=$(mktemp) exec 3>"$tmpfile" rm "$tmpfile" >&3 cat <<EOS line 1 line 2 line 3 EOS cat <&3 tmpfile=$(mktemp) 执行3>“$tmpfile” rm“$tmpfile” >&3 cat您只打开文件描述符3进行写入,而不是读取。把那行改成 exec 3<>"$tmpfile" 虽

我的问题是从中得到启发的

以脚本为例:

tmpfile=$(mktemp)
exec 3>"$tmpfile"
rm "$tmpfile"

>&3 cat <<EOS
line 1
line 2
line 3
EOS

cat <&3
tmpfile=$(mktemp)
执行3>“$tmpfile”
rm“$tmpfile”

>&3 cat您只打开文件描述符3进行写入,而不是读取。把那行改成

exec 3<>"$tmpfile"
虽然3和4都引用同一个文件,但它们各自维护一个单独的文件指针。阅读和写作不需要打开3;您可以在描述符3上写入文件,然后从描述符4读取内容。

谢谢。要完成“通过关闭并重新打开文件描述符3或打开另一个文件描述符来重新打开文件进行读取”,我需要保持实际文件的完整性吗?也就是说,我必须放弃
rm“$tmpfile”
技巧吗?如果没有,您能否添加一个我如何实际关闭和重新打开FD的示例?在删除文件之前添加
exec 4<“$tmpfile”
;然后
cat
tmpfile=$(mktemp)
exec 3> "$tmpfile"
exec 4< "$tmpfile"

rm "$tmpfile"

>&3 cat <<EOS
line 1
line 2
line 3
EOS

cat <&4