如何从每行含多个变量的文件中读取变量?
Bash读取每行内容并赋值给多个变量
嘿,我来帮你搞定这个问题!你根本不需要那个内层循环,read命令本身就支持直接把一行的内容拆分到多个变量里,特别适合你的场景。
直接看改进后的代码,完美匹配你的需求:
while read var1 var2 var3; do # 这里可以替换成你实际要执行的操作 echo "处理行:第一个值是*$var1*,第二个是*$var2*,第三个是*$var3*" # 比如你可以做计算:sum=$((var1 + var2)),或者写入其他文件等 done < ./test.txt
为什么这样可行?
read var1 var2 var3会自动把读取到的一行内容,按空白字符(空格、制表符都算)分割成三个部分,分别赋值给var1、var2、var3,完全符合你的test.txt每行3个值的格式。- 如果某行的字段数意外超过3,多余的内容会全部归到最后一个变量(比如一行是
1 2 3 4,那var3会是3 4);要是字段数不足3,对应的变量会被设为空字符串,你可以根据需求加判断处理这种情况。
对比你原来的代码,这种方式不仅更简洁,还直接实现了你要的“把3个值分别赋值给变量再操作”的需求,不用再逐个遍历字段啦。
内容的提问来源于stack exchange,提问作者Miha
相关产品推荐
相关产品推荐

