Olá Alfredo, pensei em usar eval.
eval 'select opt in "${options[@]}";do case $REPLY in '$(
for ((i=1;i<=${#options[@]};i++));do echo $i\)echo ${vet_opt[i]}\;\;;done
)'esac;done'
O loop do for é executado antes e, com o echo, monta as opções do case.
O vetor ${vet_opt[i]} é um vetor com os comandos de cada número de ${#options[@]}.
Não testei então não sei se vai funcionar direito ecoando os comandos ali dentro
do for e com o eval depois. Pode ser perigoso deletar, mover ou copiar alguma
coisa numa das opções do case.
Por isso o segundo echo, apenas pra ecoar o valor de ${vet_opt[i]}.
Abraços Paulo
On 16/04/2019 13:32, Alfredo Casanova address@hidden [shell-script] wrote:
> Galera, quero criar um menu com a estrutura:
>
> select opt in "${options[@]}"; do
> case $REPLY in
>
> .......
>
> esac
> done
>
> onde as opções do case seriam geradas dinamicamente a depender da quantidade de items no array ${options[@]}.
> Esse array, dependendo de outras funções no script, pode ter entre 2 e 15 opções.
> Qual a melhor forma pra popular esse case dinamicamente?
>
>
> --
> []'s
> Alfredo Tristão Casanova .͘.
> Linux User #228230
> tel: +55 61 9655 9619
>
>
> ----------------------------------------------------------
> Enviado por: Alfredo Casanova <address@hidden>