You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Bash数组值与文件名一一对应写入文件?

解决Bash脚本中值与文件一一对应写入的问题

嗨,你的问题出在嵌套循环上——原代码里的两层for循环会把每一个值都遍历写入到每一个文件里,自然就出现了所有值都进每个文件的情况。要实现第一个值对应第一个文件、第二个对应第二个的效果,我们需要按数组索引来一一匹配,而不是交叉遍历。

修改后的代码

#!/usr/bin/env bash
value[0]=5.85
value[1]=3.87
value[2]=4.35
names_files=( EU EUA PT )
date="08-03-2020"

# 按数组索引循环,确保值和文件一一对应
for ((i=0; i<${#value[@]}; i++))
do
    current_value=${value[$i]}
    current_file=${names_files[$i]}
    echo "$date|$current_value" >> ./teste2/$current_file.dat
done

关键说明

  • 用${#value[@]}获取value数组的长度,这样循环次数会自动匹配数组元素数量(这里是3次)
  • 通过索引$i同时获取value和names_files数组中对应位置的元素,实现一对一写入
  • 如果你后续需要扩展数组长度,只要保证两个数组的元素数量一致,这段代码就能自动适配

内容的提问来源于stack exchange,提问作者Gonçalo Bastos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 10:27:47