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