迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Bash 中的多维数组

作者:迹忆客 最近更新:2023/05/16 浏览次数:

多维数组对于任何程序都是非常重要的元素。 它主要用于创建数据的表视图和许多其他用途。

本文演示如何创建二维数组。 此外,我们将通过必要的示例和解释来讨论该主题。

我们将在这里讨论两种不同的方法。


在 Bash 中声明多维数组的基本方法

这是创建多维数组的最基本方法。 在下面的示例中,我们将创建一个非常基本的二维数组。

下面是我们示例的代码。

ArrayOfArray_1=("Alen" "24")
ArrayOfArray_2=("Walker" "31")
MainArray=(
  ArrayOfArray_1[@]
  ArrayOfArray_2[@]
)

ArrayLength=${#MainArray[@]}
for ((i=0; i<$ArrayLength; i++))
do
  name=${!MainArray[i]:0:1}
  age=${!MainArray[i]:1:1}
  echo "Name : ${name}"
  echo "Age : ${age}"
done

上面的代码显示我们声明了两个不同的数组,名为 ArrayOfArray_1 和 ArrayOfArray_2。 之后,我们声明了我们的主数组,其元素是我们最近声明的这两个数组。

然后我们计算了一个循环的数组长度。 在循环内部,我们通过索引主数组从这两个子数组中提取数据。

最后,我们回显最终结果。 执行脚本后,您将获得如下所示的输出。

Name : Alen
Age : 24
Name : Walker
Age : 31

在 Bash 中使用关联数组声明二维数组

这个方法有点复杂。 此方法将讨论一个名为关联数组的特殊 Bash 脚本数组。

关联数组是一种特殊的数组,可以将字符串值存储为键或索引。 它类似于其他编程语言。

声明关联数组的一般语法是 declare -A ArrayName。

下面的示例将创建一个包含五行六列的二维数组。 下面是我们示例的代码。

declare -A Array2D
RowNum=5
ColumnNum=6

for ((i=1;i<=RowNum;i++)) do
    for ((j=1;j<=ColumnNum;j++)) do
        Array2D[$i,$j]=$RANDOM
    done
done

f1="%$((${#RowNum}+1))s"
f2=" %9s"

printf "$f1" ''
for ((i=1;i<=RowNum;i++)) do
    printf "$f2" $i
done
echo

for ((j=1;j<=ColumnNum;j++)) do
    printf "$f1" $j
    for ((i=1;i<=RowNum;i++)) do
        printf "$f2" ${Array2D[$i,$j]}
    done
    echo
done

在上面的示例中,我们声明了一个名为 Array2D 的关联数组。

之后,我们创建了两个变量并为它们分配了一个整数值。 此整数值指定行数和列数。

然后我们创建了一个嵌套循环,用随机数填充数组。

现在我们完成了数组的声明和组织。 是时候看看我们的二维数组是什么样子了。

我们通过使用一些循环来做到这一点,如代码所示。 当您执行上面的脚本时,您将看到如下所示的输出。

           1         2         3         4         5
 1     16700      5241      2599     24330      1662
 2     23264     19557     10425     13413     25606
 3     17987      4199     13598     23897     26734
 4     24420     27830     24855      8165     13531
 5     15495     18790     13347     12947     11826
 6     23458     22838       137     32454     32441

本文中的所有代码都是用 Bash 编写的。 它只会在 Linux Shell 环境中工作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便