日期:2014-05-16  浏览次数:20577 次

Unix下shell对文件随机读写

在《高级Bash脚本编程指南》上有一个例子,用重定向,通过shell对文件随机读写,但那方法在Unix的sh下不管用,自己写了一个,例子如下:

?

#!/bin/sh
#randRead.sh
echo 1234567890 > sFile 
exec 3<> sFile          
#read -n 4 <&3          
dd bs=1 count=4  of=/dev/null <&3 2>/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 <&3          
     5  dd bs=1 count=4  of=/dev/null <&3 2>/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 <&3             # 只读4个字符.
  90       echo -n . >&3             # 写一个小数点.
  91       exec 3>&-                 # 关闭fd 3.
  92       cat File                  # ==> 1234.67890
  93       # 随机存储.

?