#!/bin/bash
echo 123456789 > out.txt
exec 3<> out.txt
read -n 4 <&3
echo -n 5 >&3
exec 3>&-
在面试笔试中,在脚本末尾被问及out.txt的内容。我确实运行了脚本后记,它给了我123456789
。但是我不知道脚本中正在发生什么,尤其是带有exec语句的部分。我查找了联机帮助页和google搜索结果,exec
但3<>
一点都找不到。能够精通shell脚本的人可以解释这里发生了什么吗?
echo 123456789 > out.txt
写入字符串123456789
的out.txt
文件。
该exec 3<>out.txt
构造打开文件out.txt
进行读写<
,>
并将其附加到文件描述符#3。
read -n 4 <&3
读取4个字符。
echo -n 5 >&3
写5(用5代替5)。
exec 3>&-
关闭文件描述符#3。
导致
cat out.txt
123456789
关于exec
int的部分bash(1)
指出:
exec [-cl] [-a name] [command [arguments]]
如果command
指定,它将替换外壳。[...]如果command
未指定,则任何重定向都将在当前shell [...]中生效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句