我想创建多个数组,其中包含引用另一个数组中元素数的文件名的随机列表。我怎样才能将一个$ 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