bash – 管道文件逐行变成多个读取变量

前端之家收集整理的这篇文章主要介绍了bash – 管道文件逐行变成多个读取变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含两列信息的文件
Box1 a1
Box2 a2

我试图逐行读取这个文件,并将每个行项目放入变量中

在第一遍,$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

如何解决这个问题?

管道读取命令导致变量被设置在一个子shell中,这使得它们不可访问(实际上它们已经消失)到其余的代码中.在这种情况下,您甚至不需要for循环或第二个read命令:
while read -r a b; do
    echo $a $b
done < text.txt

猜你在找的Bash相关文章