Массивы

Массив может содержать различные элементы

   myArray=(1 2 "three" 4 "five") 
КомандаОписание
arr=()Создание пустого массива
arr=(1 2 3)Инициализация массива
${arr[2]}Получить третий элемент
${arr[@]}Получить все элементы
${!arr[@]}Получить индексы массива
${#arr[@]}Размер массива
arr[0]=3Перезаписать первый элемент
arr+=(4)Добавить значение
str=$(ls)Записать вывод ls, как строку
arr=( $(ls) )Записать вывод ls как массив файлов
${arr[@]:s:n}Получить n элементов начиная с индекса s
for t in ${allThreads[@]}; do
  ./pipeline --threads $t
done
for i in ${!allThreads[@]}; do
  ./pipeline --threads ${allThreads[$i]}
done

${allThreads[@]} - все элементы в массиве

Если добавить восклицательный знак и сделать его ${!allThreads[@]}, то вернется список всех индексов массива (в нашем случае от 0 до 7). Другими словами, цикл for перебирает все индексы $i и считывает $i-й элемент из $allThreads, чтобы установить значение параметра -threads.

Добавление элементов в массив

   myArray+=( "newElement1" "newElement2" )
allThreads=(1 2 4 8 16 32 64 128)
allRuntimes=()
for t in ${allThreads[@]}; do
  runtime=$(./pipeline --threads $t)
  allRuntimes+=( $runtime )
done