:)我想从文件中读取行并保存第一和第二列。我想把它保存成bash中的二维数组。过滤是可以的,它做了正确的思考。但是我不知道如何检查数组是否为空(我的意思是它没有保存任何东西到该数组,所以它全部来自文件)。其次,我在FUNCTION和RELIANCE上得到错误,命令没有找到,回声又不起作用,试图用谷歌搜索一切,但似乎没有人使用两个索引维度数组。谢谢任何提示!
#!/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
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