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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...