我有一个包含两列信息的文件:
box1 a1
box2 a2
Run Code Online (Sandbox Code Playgroud)
我正在尝试逐行读取此文件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
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果:
box1 a1 box2 a2
Run Code Online (Sandbox Code Playgroud)
当我预期以下结果时:
box1 a1
box2 a1
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
che*_*ner 45
管道化read命令会导致变量在子shell中设置,这使得它们无法访问(事实上,它们已经消失)到代码的其余部分.但是,在这种情况下,您甚至不需要for循环或第二个read命令:
while read -r a b; do
echo "$a" "$b"
done < text.txt
Run Code Online (Sandbox Code Playgroud)