<i id='zs77z'><div id='zs77z'><ins id='zs77z'></ins></div></i>

  1. <tr id='zs77z'><strong id='zs77z'></strong><small id='zs77z'></small><button id='zs77z'></button><li id='zs77z'><noscript id='zs77z'><big id='zs77z'></big><dt id='zs77z'></dt></noscript></li></tr><ol id='zs77z'><table id='zs77z'><blockquote id='zs77z'><tbody id='zs77z'></tbody></blockquote></table></ol><u id='zs77z'></u><kbd id='zs77z'><kbd id='zs77z'></kbd></kbd>
    1. <fieldset id='zs77z'></fieldset>
      <i id='zs77z'></i>
      <span id='zs77z'></span><acronym id='zs77z'><em id='zs77z'></em><td id='zs77z'><div id='zs77z'></div></td></acronym><address id='zs77z'><big id='zs77z'><big id='zs77z'></big><legend id='zs77z'></legend></big></address>

      <ins id='zs77z'></ins>

          <code id='zs77z'><strong id='zs77z'></strong></code>

          <dl id='zs77z'></dl>

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

          • 时间:
          • 浏览:6
          • 来源:124软件资讯网

              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: %s\n" $file1 $count1 "$data1"

              else

              eof1=1

              fi

              if read data2 <&$FD2; then

              let count2++

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

              else

              eof2=1

              fi

              done

              }

              #read file1 and file2

              readfiles file1 file2