В bash можно создать интерактивное меню с помощью цикла `while` и оператора `select`. Для динамического добавления вариантов выбора можно использовать массивы. Вот пример скрипта, который демонстрирует создание интерактивного меню с динамическим выбором вариантов: ```bash #!/bin/bash # Массив с вариантами выбора options=("Вариант 1" "Вариант 2" "Вариант 3" "Выход") # Функция, которая будет выполняться при выборе варианта function handle_choice() { case $1 in 1) echo "Вы выбрали вариант 1" ;; 2) echo "Вы выбрали вариант 2" ;; 3) echo "Вы выбрали вариант 3" ;; 4) echo "Выход" exit 0 ;; *) echo "Некорректный вариант" ;; esac } # Бесконечный цикл для отображения меню while true do # Печатаем варианты выбора echo "Выберите один из вариантов:" select option in "${options[@]}" do # Обрабатываем выбранный вариант handle_choice $REPLY break done done ``` Вы можете добавить или удалить варианты выбора, изменяя значения в массиве `options`. Функция `handle_choice` будет выполняться при выборе варианта и может быть настроена для выполнения необходимых действий. Примечание: Данный скрипт использует `select` для интерактивного выбора варианта. Он доступен только в bash и не будет работать в других оболочках, таких как sh или dash.
select, for, while, until - это четыре команды, которые создают цикл. Например: for a in 1 2; do for b in 1 3; do select list; do while something; do break done done done done Это нормальное использование всех циклов. Однако в вашем скрипте может быть ошибка или неправильное написание команды case. Я не совсем понял задачу, но вы можете посмотреть пример ниже, возможно, это поможет: jsonlist="$(jq '.[][]|keys[]' sites.json|tr -d \")" select action in ${jsonlist}; do echo "[$action]" test "$action" == "title" && break newlist="$(jq ".[][][\"$action\"][]" sites.json)" echo "$newlist" done