为什么我的 bash 多维数组代码不起作用?[复制]

why my bash multidimensional array code is not working? [duplicate]

提问人:masrur 提问时间:9/27/2023 最后编辑:masrur 更新时间:9/27/2023 访问量:35

问:

我正在尝试在 bash 中制作一个多维度数组并访问元素。但它不起作用。

我尝试过使用此代码,但出现错误

# Create an indexed array to hold the inner arrays
    array=()

# Initialize the inner arrays
  array[0]=(1 2 3)
  array[1]=(4 5 6)
  array[2]=(7 8 9)

# Access elements
  element_12="${array[1][2]}"
  echo "Element at [1][2]: $element_12"

# Loop through the elements
    for ((i = 0; i < ${#array[@]}; i++)); do
        inner_array=("${array[i][@]}")  # Copy the inner array
        for ((j = 0; j < ${#inner_array[@]}; j++)); do
            echo "Element at [$i][$j]: ${inner_array[j]}"
       done
   done
Linux bash shell 多维数组 元素

评论

1赞 KamilCuk 9/27/2023
请发布确切的错误消息。很难回答与“不工作”相关的“为什么”。你的代码正在“工作”,只是不是期望的方式。它的行为方式不是你期望的,因为它应该以这种方式运行。
0赞 masrur 9/27/2023
它会抛出您稍后提到的错误消息。有什么方法可以在 Bash 中做到这一点吗?
1赞 user1934428 9/27/2023
bash 没有多维数组。你为什么期望你的代码能正常工作?
0赞 pjh 9/27/2023
另请参阅如何在 bash 中声明 2D 数组

答:

1赞 KamilCuk 9/27/2023 #1

为什么我的 bash 多维数组代码不起作用?

因为 Bash 不支持多维数组。特别是,Bash 不支持将列表分配给数组成员,该列表应包含在错误消息中:

$ array[0]=(1 2 3)                                                                                                                             
-bash: array[0]: cannot assign list to array member                                                                                              

评论

0赞 masrur 9/27/2023
还有其他方法可以在 Bash 中做到这一点吗?