如何将制表符分隔的字段读入数组并提取中间值赋值给变量
问题原因
mapfile是按行读取文件内容到数组,每一行对应数组的一个元素。你的HOMO.txt只有1行内容,因此数组myArray仅存在myArray[0]这一个有效元素,访问myArray[1]自然返回空值。
解决方法
方法1:拆分已有行元素取值
你可以直接拆分myArray[0]的内容,提取第二个字段赋值给变量:
# 提取中间数值赋值给变量homo_val homo_val=$(echo ${myArray[0]} | awk '{print $2}') # 验证结果 echo $homo_val
执行后输出为-4.6242。
方法2:读取文件时直接拆分字段
不需要用mapfile,直接读取文件时就把三个字段拆分到不同变量,更简便:
# 按空格拆分单行内容,分别赋值给三个变量 read col1 col2 col3 < HOMO.txt # 中间数值即为变量col2的值 echo $col2
方法3:按字段读取到数组
如果你需要把每个字段都存为数组元素,可以用read -a直接按字段读入数组:
# 单行的每个字段依次对应数组fieldArr的一个元素 read -a fieldArr < HOMO.txt # 中间数值为索引1的元素 echo ${fieldArr[1]}
内容的提问来源于stack exchange,提问作者Jatin Kashyap
相关产品推荐
相关产品推荐

