tentar de novo [RESOLVIDO]

1. tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 23/08/2011 - 08:13h

OLá a todos,


Sou um geógrafo e estou a fazer um script mas tenho dificuldades no seguinte: Eu tenho um script que importa shapefiles para a base de dados. Adicionei uma clausula if para ver se o ficheiro existe ou se foi mal digitado, mas quero que no caso de ser mal digitado o usuario possa tentar de novo, como faço isso?

exemplo

echo "Digite o ficheiro a importar"

read ficheiro

if -e "ficheiro" then importa

else tente de novo



Não sei como dar hipotese de o usuario tentar de novo. como e que e que faço para o script voltar ao passo anterior?

obrigado


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/08/2011 - 08:21h

#!/bin/bash
# by ronin
# see http://sekysu.blogspot.com

while : ; do

echo 'Digite o ficheiro a importar'

read $FICHEIRO

if [ -e $FICHEIRO ]
then
importar && exit
else
tente_de_novo
fi

done

exit

3. Re: tentar de novo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/08/2011 - 08:25h

Na verdade a estrutura abaixo já resolveria, embora eu ache ela muito tosca...

while : ; do

echo 'Digite o ficheiro a importar'

read $FICHEIRO

if [ -e $FICHEIRO ]
then
importar && exit
fi
done


4. Re: tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 23/08/2011 - 08:26h

espectacular...obrigado...

Já agora como faço para dar também a hipotese ao usuario de sair e fechar o script?

obrigado


5. Re: tentar de novo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/08/2011 - 08:48h

#!/bin/bash
# by ./.ronin
# see http://sekysu.blogspot.com
# version 1.1
# Mantendo a simplicidade

while : ; do

echo 'Digite o ficheiro a importar ou Crtl+C para sair'

read $FICHEIRO

if [ -e $FICHEIRO ]
then
importar && exit
else
tente_de_novo
fi

done

exit


6. Re: tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 23/08/2011 - 08:52h

Uma ultima duvida, no script o usuario digita o nome de um campo de uma tabela do pgadmin. No caso de esse campo não existir e devolvido "relation "campo" does not exist".


Como faço para dar a hipotese de digitar de novo outra vez?

é so acrescentar while?


7. Re: tentar de novo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/08/2011 - 09:11h

a funcão "importar" deve resolver este requisito.

Segue um exemplo que pode ser aproveitado

MSG_ERR='does not exist'
ERR='relation "campo" does not exist'

GET_RST=$(echo $ERR | cut -d ' ' -f 2-)

if [ "$GET_RST" != "$MSG_ERR" ]
then

deu certo

fi





8. Re: tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 23/08/2011 - 09:14h

tem um problema com o que me disse ao bocado... eu depois de importar tenho mais codigo, não quero que o script feche mas se tirar o exit ele contina no while, se o colocar ele fecha, como faço?


9. Re: tentar de novo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/08/2011 - 09:19h

troque o exit dentro do while por break


10. Re: tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 23/08/2011 - 10:54h

obrigado.


Será que me poderia explicar melhor a função? e onde a insiro?


11. Re: tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 24/08/2011 - 06:29h

Não consigo por a função a funcionar corretamente. No caso de errar o nome do campo da para voltar a tentar no entanto aparece a mensagem de erro original e eu pretendia que aparecesse a que eu queria pode ajudar-me?

obrigado


12. Re: tentar de novo [RESOLVIDO]

pdcc pirata
pdcc

(usa Freespire)

Enviado em 24/08/2011 - 06:32h

tenho assim no script:

while : ; do

read campo_rua

psql -d $nomemuni -c "UPDATE $nome_passeios SET rua = (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)"

if [ "$GET_RST" != "$MSG_ERR" ]

MSG_ERR='does not exist '
ERR='Campo inexistente, tente de novo ou prima Ctrl + C para sair'

GET_RST=$(echo $ERR | cut -d ' ' -f 2-)


then echo "Campo digitado não existe. Tente de novo ou prima Ctrl + C para sair..."

else echo "Atribuição do números das ruas aos passeios concluída. A iniciar exportação do novo shapefile dos passeios de $nomemuni com nova coluna rua preenchida.."

fi
done



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts