我想在一段时间内使用read cmd读取文件中每行的行数,但是我在这个脚本的第4行有一个问题:
while read a
do
echo before
read var
echo after
done < file1
结果是:
before
after.
你能帮我解决这个问题????
答案 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中的特定描述符中读取。