Eu tenho um script com um while dentro de outro. ALguém sabe se existe alguma instrução que permita sair do while e depois voltar ao inicio do primeiro?
psql -d $nomemuni -c "UPDATE $nome_passeios SET $campo_passeios = (SELECT $campo_rua FROM $nome_ruas ORDER BY ST_Distance( Line_Interpolate_Point_Alter($nome_ruas.wkb_geometry, 0.5), $nome_passeios.wkb_geometry) ASC LIMIT 1)" && break
#Se o campo já existir previamente
elif [ $resposta = "e" ];
then
echo "Digite o nome do campo com o número de rua da tabela $nome_ruas"
while : ; do
read campo_rua
psql -d $nomemuni -c "UPDATE $nome_passeios SET $campo_passeios = (SELECT $campo_rua FROM $nome_ruas ORDER BY ST_Distance( Line_Interpolate_Point_Alter($nome_ruas.wkb_geometry, 0.5), $nome_passeios.wkb_geometry) ASC LIMIT 1)" && break
MSG_ERR='does not exist'
ERR='relation "$campo_rua" does not exist'
GET_RST=$(echo $ERR | cut -d ' ' -f 2-)
if [ "$GET_RST" != "$MSG_ERR" ]
then echo "\d $nome_ruas" | psql $nomemuni
echo "
O campo digitado não existe!
A tabela $nome_ruas tem as caracteristicas descritas em cima.
Tente de novo ou prima Ctrl + C para sair, ou prima v para sair."
read voltar
elif [ $voltar = "v" ]
then break && break
fi
done
break
else echo "
A opção escolhida não é válida, tente de novo por favor, ou prima Ctrl + C para sair."
fi
done
10. Re: voltar ao inicio de um while
pdccusa Freespire
Post recolhido
Enviado em 26/08/2011 - 05:35h
Experimentei com dois break mas nada. Eu quero que seja possivel voltar a digitar entre escolher ou criar depois de o usario tiver selecionado escolher
11. while dentro de while enquanto.....
AprendiNoLinuxusa Ubuntu
Post recolhido
Enviado em 26/08/2011 - 07:20h
[citando]
Eu tenho um script com um while dentro de outro. ALguém sabe se existe alguma instrução que permita sair do while e depois voltar ao inicio do primeiro?
[/citando]
1- Quando entrar no Script o usuário precisa optar entre opções?
2- Quando escolher a opção ele ficará dentro do 2º while ou irá sempre retornar ao 1º ?
3- Quando ele não pode voltar ao 1º while ?
4- Em que momento ele deve sair do 1º while e abandonar o Script ?
Vou tentar responder com um Script genérico a estas perguntas. Se as rotinas puderem ser usadas dentro do teu contexto ótimo.
12. Protótipo: Faça enquanto... while dentro de while
AprendiNoLinuxusa Ubuntu
Post recolhido
Enviado em 26/08/2011 - 08:32h
#!/bin/bash
#
# passeios.sh
# -----------------------------------------------------------------------------
# Necessidade1: Testar se existe campo na tabela.
# -----------------------------------------------------------------------------
# Se existe o campo, retorna aviso.
# Se campo não existe na tabela, adicionar.
# -----------------------------------------------------------------------------
# Necessidade2: Existindo o campo na tabela, fazer update neste campo e demais.
# -----------------------------------------------------------------------------
# Necessidade3: Fazer loop em menu principal até usar opção sair.(manual)
# -----------------------------------------------------------------------------
# TODO: Basicamente este Script espera o nome de um campo na tabela e grava
# o nome do campo na tabela e a informação necessária.
# Fica aguardando receber outro campo ou protosuário escolhe sair.
# -----------------------------------------------------------------------------
# Protótipo de fases versão 0.1
# -----------------------------------------------------------------------------
function _campo_existe()
{
:
# Faz teste para saber se o campo existe mesmo.
# Mosta mensagem de erro alertando que campo não existe.
# Retorna True ou false 0,ou 1 para a função que o chamou.
}
function _grava_campo()
{
:
# Vai fazer a gravação do campo.
# Só tem acesso nesta função se o campo realmente existe.
_campo_existe;
# Comando pra gravar o campo vai aqui.
}
function _cad_campo()
{
: #Vai tentar o cadastro do campo.
_campo_existe; #Testa se o campo não existe. Se falso faz o cadastro.
_cad_campo; # Só faz o cadastro do campo se não existir.
}
function _opcoes()
{
:
# c= Cadastrar campo, a=alterar campos s=Sair
# Fica sempre mostrando as opções até escolher [S] sair.
}
function main() {
_opcoes;
}
main ${@};
exit
============================================
Confira se a lógica é esta mesmo.