欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


Linux上双网卡单网关设置方法步骤
linux系统快速查看进程pid的方法
如何在linux系统下配置无线网卡?
如何学习linux的建议
Windows8系统定位设置方式
linux基础与应用
Win8系统应用商店点击无法应的解决办法
U盘在Linux下显示不正常的解决方法
linux使用shell搜索查找文本的几种方法分享
Windows 8.1 Preview安装无法完成
shell下同时读取多个文件的方法
【 来源:网络 】【 点击:2 】 【 发布时间:2017_03_03 08:59:59 】

   1. 单个文件的读取

  在shell脚本下,可以多种方式实现按行读取文件,如下:

  for line in `cat ${input_filename}`

  do

  echo $line

  done

  while read line

  do

  echo $line

  done < ${input_filename}

  其中第二种方式是将文件重定向到标准输入中

  2. 多个文件读取方法

  那如何实现同时多个文件的读呢?

  我们可以继续利用bash中的文件重定向功能,将文件重定向到特定的文件描述符中,语法如下:

  n

  n>file

  n>>file

  n<>file

  这里的n代表打开文件file的文件描述符,类似其他编程语言中的fd,如果没有指定n,则其默认行为如下:

  

  >file #same as 1>file

  <>file #same as 0<>file

  我们可以通过exec命令来打开所要重定向的文件:

  exec 7

  exec 8

  然后我们可以通过read命令来读取对应文件的内容:

  read data <&7 #使用符合是为了区分7是文件描述符,而不是文件名

  read data <&8

  关闭文件

  exec 7

  exec 8

  多文件读取示例代码如下:

  readfiles() {

  local FD1=7

  local FD2=8

  local file1=$1

  local file2=$2

  local count1=0

  local count2=0

  local eof1=0

  local eof2=0

  local data1

  local data2

  # Open files.

  exec 7<$file1

  exec 8<$file2

  while [[ $eof1 -eq 0 || $eof2 -eq 0 ]]

  do

  if read data1<&$FD1; then

  let count1++

  printf "%s, line %d: %sn" $file1 $count1 "$data1"

  else

  eof1=1

  fi

  if read data2 <&$FD2; then

  let count2++

  printf "%s, line %d: %sn" $file2 $count2 "$data2"

  else

  eof2=1

  fi

  done

  }

  #read file1 and file2

  readfiles file1 file2

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号