while read line;do
read header_line < headers.txt
task 1
task 2
done < temp1.txt
我想同时从文件headers.txt和temp1.txt中读取行。所以,例如,如果我从temp1.txt读取一行,我还应该读取来自headers.txt的一行。这段代码的问题在于它逐个读取temp1.txt中的行,但它始终从headers.txt中读取相同的行。一旦读取header_line,我希望文件指针移动到下一行。我该怎么做呢?
答案 0 :(得分:3)
使用额外的文件描述符,并在do
:
#!/bin/bash
# open extra file descriptors for input
exec 3< headers.txt
while read -r line; read -r -u 3 header_line
do
echo "[$header_line] [$line]"
done < temp1.txt
# close the extra file descriptor
exec 3<&-
答案 1 :(得分:1)
可能你可以替换这一行
read header_line < headers.txt
with:
sed -n '${count}p' hearders.txt
其中count在while循环的每次迭代中递增,应该初始化为1.