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

在多个数组中查找值并返回对应数组名称的实现需求

解决方案:匹配数值到对应数组并输出结果

可以用Bash脚本实现这个需求,核心思路是先建立数值到数组名的映射关系,再遍历目标数值文件完成匹配输出。

脚本实现

# 定义你的8个数组(示例中仅列出2个,自行补充Array3到Array8)
Array1=(1 2 3 4 5)
Array2=(6 7 8 9 10)
# Array3=(...)
# ...
# Array8=(...)

# 创建关联数组,存储「数值→数组名」的映射
declare -A value_to_array

# 遍历所有数组,填充映射关系
for arr_name in Array1 Array2 Array3 Array4 Array5 Array6 Array7 Array8; do
    # 获取当前数组的所有元素
    eval "elements=(\"\${$arr_name[@]}\")"
    for num in "${elements[@]}"; do
        value_to_array["$num"]="$arr_name"
    done
done

# 配置输入输出文件路径
input_file="values.txt"  # 存放待匹配数值的文件,每行一个数值
output_file="result.txt" # 存放结果的文件

# 清空输出文件(若需保留历史内容可删除此行)
> "$output_file"

# 遍历输入文件的每个数值,完成匹配并写入结果
while read -r num; do
    # 跳过空行
    [[ -z "$num" ]] && continue
    # 查找对应数组名并输出
    if [[ -n "${value_to_array[$num]}" ]]; then
        echo "$num ${value_to_array[$num]}" >> "$output_file"
    else
        # 可选:处理无匹配的情况,可根据需求修改或删除
        echo "$num 未找到对应数组" >> "$output_file"
    fi
done < "$input_file"

关键说明

  • 映射构建:通过eval动态获取每个数组的元素,将数值与所属数组名绑定到关联数组中,实现快速查找。
  • 去重处理:如果同一个数值出现在多个数组中,脚本会保留最后一个遍历到的数组名;若需保留所有匹配的数组名,可将映射值改为数组拼接(比如value_to_array["$num"]+="$arr_name ")。
  • 环境要求:需要在支持关联数组的Bash环境(4.0及以上版本)运行,若用其他shell需调整语法。

内容的提问来源于stack exchange,提问作者Nitin Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:16:15