2014-08-31 99 views
0

我想問一下我用來爲變量賦值二維數組元素的語法。這基本上是我想做的事:我有字符的2維數組和字符串名爲SUB_STRING是得到數組中的特定元素的值,並把它稱爲whole_string另一個字符串將數組的值賦給變量bash腳本

for ((j=1;j<=num_columns;j++)) do 
     for ((i=1;i<=num_rows;i++)) do 

在陣列矩陣中的元素[I,J]的值分配給子 串

whole_string="$whole_String$sub_string" 
    done 
done 

我想知道如何分配陣列到子串我有的值。謝謝

+1

'bash'不具有二維陣列,也可以存儲另一個數組內的陣列。 – chepner 2014-08-31 18:58:58

+0

...好吧,可以轉義一個數組 - 就像在'printf -v arr_str'%q'「$ {arr [@]}」 - 中一樣 - 並將結果字符串存儲爲一個數組元素......但仍然這個問題太過模糊,並且不清楚這是否實際上是爲了促進一個合理的目標。 – 2014-08-31 19:01:05

+0

形式爲'$ {x} _ $ y'的鍵的一維關聯數組有時足以模擬二維數組......但再一次,問題太不清楚了。 – 2014-08-31 19:01:42

回答

3

使用當前的bash,您可以轉移關聯數組來創建多維數組。

#!/bin/bash 

declare -A A # declare associative array A 
num_rows=7 
num_columns=9 

# fill array 
for ((j=1;j<=num_rows;j++)) do 
    for ((i=1;i<=num_columns;i++)) do 
    A[$j,$i]="$j:$i" # fill with row:column 
    done 
done 

# print array 
for ((j=1;j<=num_rows;j++)) do 
    for ((i=1;i<=num_columns;i++)) do 
    echo -n "${A[$j,$i]} " 
    done 
    echo 
done 

輸出(9×7陣列):

 
1:1 1:2 1:3 1:4 1:5 1:6 1:7 1:8 1:9 
2:1 2:2 2:3 2:4 2:5 2:6 2:7 2:8 2:9 
3:1 3:2 3:3 3:4 3:5 3:6 3:7 3:8 3:9 
4:1 4:2 4:3 4:4 4:5 4:6 4:7 4:8 4:9 
5:1 5:2 5:3 5:4 5:5 5:6 5:7 5:8 5:9 
6:1 6:2 6:3 6:4 6:5 6:6 6:7 6:8 6:9 
7:1 7:2 7:3 7:4 7:5 7:6 7:7 7:8 7:9