Use isto:
arr=()
while read v; do arr+=( "$(printf "%s=%s" "$v" "${!v}")" ); done < <(compgen -v zv)
select i in "${arr[@]}"; do cd "${i#*=}"; break; done
Isso usa o bashs select builtin para fornecer diálogos simples baseados em menu.
-
arr=()inicializa a matriz -
while ...lê a entrada e preenche a matriz.-
arr+=( "..." )adiciona novas entradas ao array. -
printf "%s=%s" "$v" "${!v}"... imprime o nome da variável e seu conteúdo.
-
-
compgen -v zvgera a lista de todas as variáveis que seriam preenchidas ao digitar$zv<tab><tab>. - Esta lista é dada para
selectpara gerar o menu.-
cd "${i#*=}"thiscds no diretório fornecido na variável após o primeiro=.
-