如何在bash中读取文件时阅读

时间:2014-03-25 23:52:47

标签: bash shell sh

我想在一段时间内使用read cmd读取文件中每行的行数,但是我在这个脚本的第4行有一个问题:

while read a
do
    echo before
    read var
    echo after
done < file1

结果是:

before
after.

你能帮我解决这个问题????

1 个答案:

答案 0 :(得分:3)

文件描述符实际上一次只能指向一个文件。每次调用read都会从标准输入中读取,包括中间的输入。如果你想从其他东西read,你必须告诉read使用另一个文件描述符。

exec 5< file1 # assign file1 to the file descriptor number 5.
              # ("open for reading" as it were)
while read <&5 a; do # read from fd5
  echo before
  read var # read from fd0
  echo after
done
exec 5<&- # Reset fd 5 ("close the file" as it were)

您还可以使用read -u 5从bash中的特定描述符中读取。