Что-то подходящее нашёл:
Рассмотрим теперь несколько иной подход к перебору массивов. Вместо того, чтобы перебирать элементы, мы можем перебирать индексы массива:
for i in ${!allThreads
./pipeline --threads ${allThreads[$i]}
done
Разберём то, что здесь происходит. Как мы уже видели, конструкция вида ${allThreads- } представляет собой все элементы массива. При добавлении сюда восклицательного знака мы превращаем эту конструкцию в ${!allThreads
- }, что приводит к тому, что она возвращает индексы массива (от 0 до 7 в нашем случае).
Т.е. сначала перебираем индексы массива, потом в теле цикла извлекаем элемент по индексу, уменьшаем его на единицу и присваиваем опять массиву (по индексу) Хотя от уменьшения на единицу можно оказаться, если ntf -k позволяет начать нумерацию с нуля (у меня с единицы):
ntf -3 "gtk-yes|yes да|1
Как видим, цифра в конце указывет на номер варианта и ntf возвращает номер варианта, и если можно начать нумерацию с нуля, то тогда уменьшать на единицу элементы массива не придётся - вообщем подумаю