系统之家 - Windows操作系统&装机软件下载网站!

当前位置: 首页  >  教程资讯  >  电脑教程 shell下同时读取多个文件的方法

shell下同时读取多个文件的方法

时间:2023-06-02 16:16:41 来源: 人气:

   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,

作者

教程资讯

电脑教程排行

系统教程

系统主题