Parece que você quer rodar o script em algum loop, mas perde o loop. A simples modificação provavelmente será essa modificação:
[... the rest of choices ...]
if [ $choice -eq 5 ]
then
echo "BYE BYE"
exit
fi
exec $0
Isso sairá se você escolher a última opção (5), mas, caso contrário, irá reexecutar o próprio script.
Ou apenas adicione um ciclo:
while true;
do
dialog --menu "select" 40 40 5 1 server.hades 2 server.fire 3 server.geb 4 server.isis 5 exit 2> /tmp/a
choice='cat /tmp/a'
if [ $choice -eq 2 ]
then
ssh 192.168.187.*
fi
[... the rest of choices ...]
if [ $choice -eq 5 ]
then
echo "BIE BIE"
break
fi
done
"while" o código funcionou para mim. obrigado.