我想創建多個數組,其中包含引用另一個數組中元素數的文件名的隨機列表。我怎樣才能將一個$ cntr var(以cntr = 0開頭)追加到新數組名稱的末尾,以便直接引用其他數組中的元素?如何使用相同的基名枚舉多個數組
哇,我希望看起來有點明智。下面是我得到了什麼事情,到目前爲止,我希望可以幫助讓我的意思更清楚地認識:
function fGenRanList() {
cntr=0
while [[ "$cntr" -lt "${#mTypeAr[@]}" ]] ; do
n="${nAr[$cntr]}" ; echo "\$n: $n"
tracks${cntr}=() ; echo "\$tracks${cntr}: $tracks${cntr}"
while ((n > 0)) && IFS= read -rd $'\0' ; do
tracks${cntr}+=("$REPLY")
((n--))
done < <(sort -zuR <(find "${dirAr[$cntr]}" -type f \(-name '*.mp3' -o -name '*.ogg' \) -print0))
((cntr++))
done
}
錯誤我得到的是:
/home/user/bin/ranSong_multDirs.sh: line 95: syntax error near unexpected token `"$REPLY"'
/home/user/bin/ranSong_multDirs.sh: line 95: ` tracks${cntr}+=("$REPLY")'
可是我第一次commentted出從回聲聲明跟蹤$ {cntr} =()數組初始化以擺脫類似的錯誤,但不確定跟蹤$ {cntr}是否被初始化。
最後,我應該使用存儲在數組$ {nAr [$ cntr]}中的數值var來確定與$ {#mTypeAr [@]}中的元素一樣多的track(n)數組來確定每個音軌陣列將包含多少個元素。
也許我正在做的事情比需要更困難,試圖將數組實現到更老的腳本我都爲了使它們更有效率,但我想主要是爲了更好地使用BASH數組爲類似的多個進程存儲變量,我似乎經常在腳本中執行這些進程。
如何訪問數組中的元素?當我嘗試回顯「$ {tracks $ cntr [0]}」例如我得到「壞代替錯誤 – nanker
順便說一句,我有過去需要這樣的解決方案几次,所以如果這可以工作,我可以理解那麼我怎麼看到再次使用這個......除非在bash中有創建數組的數組 – nanker
間接擴展數組元素的語法有點奇怪,對於一個普通的變量,你只需要做一些類似'對於數組,您必須將索引視爲變量名稱的一部分。var =「tracks $ ctr [0]」; echo $ {!var} foo = 5; bar = foo; echo $ {!bar}'。 '。 – chepner