Eu gostaria de compartilhar algo que descobri tarde. Eu tentei adicionar mais uma etapa na validação da resposta: validar também se o caminho existe, e não consegui adaptar a solução Rakesh Sharma para isso. Finalmente, eu encontrei exatamente o que eu estava procurando, que é uma maneira de lidar com "variável dinâmica", e a maneira real de fazer isso é usando o $ {! Var}. Aqui está a versão final da minha função e seu uso:
ask_validate() {
read -p "$1" $2
if [ -z ${!2} ]; then
echo Empty answer is not allowed.
ask_validate "$1" $2
return
fi
if ! [ -d ${!2} ]; then
echo You need to provides an existing path
ask_validate "$1" $2
return
fi
echo The var name is: $2
echo The var value is: ${!2}
}
ask_validate "Please, provides the host path: " host_path
ask_validate "Please, provides the virtual host configuration path: " virtualhost_path
echo The host path is $host_path
echo The virtual host configuration path is $virtualhost_path