Unix下shell对文件随机读写
在《高级Bash脚本编程指南》上有一个例子,用重定向,通过shell对文件随机读写,但那方法在Unix的sh下不管用,自己写了一个,例子如下:
#!/bin/sh
#randRead.sh
echo 1234567890 > sFile
exec 3<> sFile
#read -n 4
dd bs=1 count=4 of=/dev/null /dev/null
echo . | dd bs=1 count=1 >&3 2>/dev/null
exec 3>&-
cat sFile
运行结果如下:
root@SMP2> cat -n randRead.sh
1 #!/bin/sh
2 echo 1234567890 > sFile
3 exec 3<> sFile
4 #read -n 4
5 dd bs=1 count=4 of=/dev/null /dev/null
6 echo . | dd bs=1 count=1 >&3 2>/dev/null
7 exec 3>&-
8 cat sFile
root@SMP2>
root@SMP2> ./randRead.sh
1234.67890
root@SMP2>
附ABS上的例子:
87 echo 1234567890 > File # 写字符串到"File".
88 exec 3<> File # 打开"File"并且给它分配fd 3.
89 read -n 4
90 echo -n . >&3 # 写一个小数点.
91 exec 3>&- # 关闭fd 3.
92 cat File # ==> 1234.67890
93 # 随机存储.