Случай с динамическим c количеством уровней (паттерны / переменные) - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть динамическое число c опций для приглашения пользователя, и, если возможно, я бы хотел управлять действиями для каждого из них с помощью оператора case.

Помимо числа параметров c, динамическое построение шаблона, а также действия, выполняемые внутри каждого шаблона. Я понимаю, что al oop должен использоваться внутри оператора case, но я не могу понять, как сделать этот трюк (даже если это возможно)

Базовый c пример идеи:

totalitems=5    
for ((c_a=1;c_a<=totalitems;c_a++)) 
do  
    echo "option $c_a"                                          
done

read -n 1 -p "Choose an option from: 1 to $c_a" answer  

case "$answer" in       

#for ((c_a=1;c_a<=totalitems;c_a++))
#do 
  $c_a)
   echo "$c_a"     
;;          
#done 

  *) echo "invalid option!"
    sleep 1
    exit;;
esac

1 Ответ

0 голосов
/ 15 апреля 2020

Если у вас менее 10 предметов, вы можете сделать

#!/usr/bin/env bash

totalitems=5
for ((c_a=1;c_a<=totalitems;c_a++)) 
do
    echo "option $c_a"                                          
done

read -en 1 -p "Choose an option from: 1 to $totalitems : " answer

case "$answer" in       
  [1-$totalitems]) echo "$answer";;  
  *) echo "invalid option!"
    sleep 1
    exit;;
esac
...