如何逐行将文件传输到多个读取变量中?

时间:2013-03-15 21:16:09

标签: bash

我有一个包含两列信息的文件:

box1 a1
box2 a2

我正在尝试逐行将此文件读入read并将每个订单项放入变量中。

在第一次通过时,$a将包含box1$b将包含a1

在第二次传递中,$a将包含box2$b将包含a2等。

我正在尝试实现的代码示例如下:

for i in text.txt; do
    while read line; do
        echo $line | read a b;
    done < text.txt;
    echo $a $b;
done

这给了我以下结果:

box1 a1 box2 a2

当我预期以下结果时:

box1 a1
box2 a1

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:40)

管道进入read命令会导致变量在子shell中设置,这使得它们无法访问(事实上,它们已经消失)到其余代码。但是,在这种情况下,您甚至不需要for循环或第二个read命令:

while read -r a b; do
    echo "$a" "$b"
done < text.txt