Я пытаюсь перезапустить цикл выделения после изменения переменных внутри него, в настоящее время он увеличивает все, но не перезапускает цикл выбора. Вот мой код:Перезапуск цикла выбора с новыми переменными в bash
select listfile in "${FILEARRAY[@]:$START:$FINISH}" Next
do
if [[ $listfile == "Next" ]];then
echo "Check point 1 $START and $FINISH"
if [[ ${#FILEARRAY[@]} > $FINISH ]];then
START=$(($START + 23))
FINISH=$(($FINISH + 23))
echo "Check point 2 $START and $FINISH"
elif [[ ${#FILEARRAY[@]} < $FINISH || ${#FILEARRAY[@]} == $FINISH ]];then
echo "No more files"
exit
fi
else
FILE=$listfile
break
fi
done
я редактировал в контрольной точке 1 и 2, проверьте пункт 1 дает мне 0 и 23 (как должно быть) и контрольно-пропускной пункт 2 дают мне 23 и 46 (также, как и должно быть). После того, как он увеличивается, я хочу, чтобы он перезапустил выбор, но используя позицию от 23 до 46 из массива.
Edit 2: Массив содержит только имена файлов:
FILEARRAY=($(ls))
Очень сложно понять, что вы пытаетесь выполнить здесь (и в своем предыдущем посте). Пожалуйста, отредактируйте свое сообщение, чтобы показать простой пример того, как вы хотите, чтобы это выглядело, т. Е. Шаг 1, используйте select для отображения N файлов (выглядит как .....), шаг 2 измените выбранные значения (я действительно не думаю это возможно!), Шаг 3 используйте select для отображения N + 1 -> N + 6 файлов (выглядит как .....). Шаг 4? В любом случае нам нужно увидеть только 2-3 строки вывода для каждого сегмента. Удачи. – shellter
@shellter Я добавил дополнительную информацию, помогает ли это выяснить, что именно я пытаюсь сделать? – user1005415
, так что вы пытаетесь добавить средство подкачки для выбора? – shellter