3 回答

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
Bash不支持多維數(shù)組。
您可以使用間接擴(kuò)展來模擬它:
#!/bin/bashdeclare -a a0=(1 2 3 4)declare -a a1=(5 6 7 8)var="a1[1]"echo ${!var} # outputs 6
使用此方法也可以進(jìn)行分配:
let $var=55echo ${a1[1]} # outputs 55
編輯1:要從文件中讀取此類數(shù)組,行中的每一行以及由空格分隔的值,請使用以下命令:
idx=0while read -a a$idx; do let idx++;done </tmp/some_file
編輯2:要聲明并初始化a0..a3[0..4]
為0
,您可以運(yùn)行:
for i in {0..3}; do eval "declare -a a$i=( $(for j in {0..4}; do echo 0; done) )"done

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
ash沒有多維數(shù)組。但您可以使用關(guān)聯(lián)數(shù)組模擬一些類似的效果。以下是假裝用作多維數(shù)組的關(guān)聯(lián)數(shù)組的示例:
declare -A arr
arr[0,0]=0
arr[0,1]=1
arr[1,0]=2
arr[1,1]=3
echo "${arr[0,0]} ${arr[0,1]}" # will print 0 1
如果未將數(shù)組聲明為關(guān)聯(lián)(with -A),則上述操作無效。例如,如果省略該declare -A arr行,echo則將打印2 3而不是0 1,因?yàn)?,0,1,0這將被視為算術(shù)表達(dá)式并計(jì)算為0(逗號運(yùn)算符右側(cè)的值)。
添加回答
舉報(bào)