【问题标题】:Bash two dimensional arrays [duplicate]Bash二维数组[重复]
【发布时间】:2014-04-30 03:52:10
【问题描述】:

:) 好吧,我想从 file.o 中读取行并保存第一列和第二列,并且我想将其保存到 bash 中的二维数组中。过滤没问题,它的想法是正确的。但是我不知道如何检查数组是否为空(我的意思是它没有向该数组保存任何内容,所以它全部来自文件)。其次,我在 FUNCTION 和 RELIANCE 上遇到错误,即找不到命令,并且 echo 再次不起作用,尝试用谷歌搜索所有内容,但似乎没有人在使用两个索引维度数组。任何提示都可以!

#!/bin/bash
declare -a NAMES
declare -a FUNCTION
declare -a RELIANCE
index=1
index1=1
for a in file.o 
do
  NAMES[$index]=$a  
  until [ nm file.o | grep -o '[UTBGCD].*' | awk '{print $2}' | awk "NR==$index1" -eq 0 ]
  do 
    FUNCTION[$index][$index1]=$( nm file.o | grep -o '[UTBGCD].*' | awk '{print $2}' | awk "NR==$index1" )
    RELIANCE[$index][$index1]=$( nm filea.o | grep -o '[UTBGCD].*' | awk '{print $1}' | awk "NR==$index1" )
    echo ${FUNCTION[$index][$index1]} 
    index1=$((index1+1))  
  done
  index=$((index+1)) 
done

【问题讨论】:

  • 顺便说一句,非环境、非内置变量的全大写名称与最佳实践背道而驰——让您面临命名空间冲突。
  • 你会得到更多的答案,如果你在一个表格中问什么是容易测试的(所以,不是nm *.o |...之类的。所以提供:1)样本输入数据和2。)想要的输出..
  • 您可能希望使用不同的语言进行此类数据处理; bash 不是为它设计的。

标签: arrays bash multidimensional-array echo


【解决方案1】:

Bash 不支持多维数组。但是,您可以通过以下两种方式之一来伪造它。首先是关联数组:

declare -A array
x=1 y=2
array["${x}_$[y}"]=value

其次,使用固定大小的数组,您可以简单地做一些数学运算。

declare -a array
x_max=100
x=1 y=2
array[(y*x_max)+x]=value

【讨论】:

  • 嗯,好吧,所以似乎很难做我想做的事。也许你可以帮助我。关键是我需要从文件中读取两列并保存1列和第二列+保存文件名。并且该脚本应该可以处理任意数量的文件。
  • 如果您能写出更清晰的解释,请将其作为单独的问题发布。或者,您可以考虑加入 Freenode 的 #bash 频道,我们可以提供(可能是粗略的)指导来完善该问题,直到它可以采取行动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 2017-09-20
  • 2019-06-23
  • 2020-04-12
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多