#!/bin/bash
array=( 2 4 5 8 15 )
a_2=( 2 4 8 10 )
a_4=( 2 4 8 10 )
a_5=( 10 12 )
a_8=( 8 12 )
a_15=( 2 4 )
numberOfTests=5
while [ $i -lt ${#array[@]} ]; do
j=0
currentArray =${array[$i]}
*while [ $j -lt ${#a_$currentArray [@]} ]; do #### this line i get ->>>> bad substitution*
./test1.sh "${array[$i]}" -c "${a_"$currentArray "[$j]}" &
let j=j+1
done
let i=i+1
done
所以我尝试这个代码,循环一个数组(称为数组),数组应该指出 我们现在正在循环的数组编号(a_X)。并且每次都指出当前的地方和价值。 任何人都可以帮助我如何使用$ currentArray正常工作所以我可以知道数组的长度和值? 我进入了标记错误的行。 谢谢你们!
答案 0 :(得分:2)
最简单的解决方案是在array
中存储数组的全名,而不仅仅是数字后缀。然后,您可以使用间接参数扩展,同时直接迭代数组的值,而不是索引。
# Omitting numberOfTests has it does not seem to be used
array=(a_2 a_4 a_5 a_8 a_15)
a_2=( 2 4 8 10 )
a_4=( 2 4 8 10 )
a_5=( 10 12 )
a_8=( 8 12 )
a_15=( 2 4 )
for arr in "${array[@]}"; do
currentArray=$arr[@]
for value in "${!currentArray}"; do
./test1.h "${arr#a_}" -c "$value" &
done
done