Duvida shell script

Iniciado por bigpuamo, 13 de Janeiro de 2014, 23:25

tópico anterior - próximo tópico

bigpuamo

Opa tudo bem pessoal , estou programando agora em shell e estou querendo uma ajuda , estou fazendo uma agenda para teste para ver como funciona a linguagem , entao eu fiz um esqueminha aqui , so que eu nao estou conseguindo fazer a funçao alterar , que ela tem a funçao de da o update do sql e alterar o contato.

segue ai o script

E na Funçao Update , melhor ainda o erro parece ser na sintaxe, mais quando eu rodo ela no prompt do sql ou no workbanch ela da certo . ! o que sera ..??





#!/bin/bash




while true
do

echo "===========Agenda============="
echo " 1 - Inserir Contato "
echo " 2 - Listar Contato "
echo " 3 - excluir Contato"
echo " 4 - Alterar o Contato"
echo " 5 - sair "
echo "______________________________"



read opcao


# Funções SQL

#----------------INSERIR----------------------------------------
inserir(){

echo "Digite o nome do contato : "
read nome
echo "Digite o telefone do contato : "
read tel
echo "Digite o Endereço:"
read endereco
echo "Acrecente mais informções"
read obs
   
inserir=$(mysql -u root  -e "INSERT INTO Cadastro VALUES (NULL,'$nome', '$tel', '$endereco', '$obs',$sql )" Agenda)
if [ "$?" -eq 0 ]
then
echo "Gravando no Banco"
sleep 1
else
echo "$?"
fi
}
#-----------------------LISTAR---------------------------------
listar(){
echo "Buscando ..."
sleep 1
clear
mysql -u root -e "select idCadastro, Nome, Telefone, Endereco, obs from Cadastro" Agenda
if [ $? = 0 ]
then
echo " Comando executado com exito "

else
echo "Erro no comando "
fi
read -p "precione enter. [Enter]"

}
#--------------------------ALTERAR---------------------------
update(){
echo "Alterar o contato"
sleep 1
clear
mysql -u root -e "select idCadastro , Nome from Cadastro;" Agenda
echo "DIGITE O ID CORRESPONDENTE AO CONTATO A SER ALTERADO "
read id
inserir
quert=$(mysql -u -e  " update Cadastro SET Nome='$nome',Telefone='$tel',Endereco='$endereco',obs='$obs' where idCadastro='$id';" Agenda)
echo "CONTATO ALTERADO COM SUCESSO "
sleep 1
}
#-----------------------------------------------------------

#-----------------------------EXCLUIR-------------------------
excluir(){
mysql -u root -e "select idCadastro , nome from Cadastro " Agenda
echo "Digite o numero do ID correspondente ao contato a ser excluido "
read id
mysql -u root -e "delete from Cadastro where idCadastro = '$id'" Agenda
clear
mysql -u root -e "select idCadastro , Nome from Cadastro " Agenda

#---------------------------------------------------------------
}
case  $opcao in
"1")

inserir
;;
"2")
listar
;;
"3")
excluir
;;
"4")
update
;;

"5")
echo "Saindo do Sistema"
sleep 2
exit
;;

esac
clear
done

zekkerj

Olá bigpuamo, tudo bem? Se ainda estiver interessado no problema...

Se eu entendi direito, vc chama a função "inserir" dentro da função "alterar", pra ler os novos valores. Só que dentro da função "inserir" vc faz um "INSERT INTO ...", o que poderia estar causando duplicação de chave.

Minha sugestão: separe o código onde vc lê os valores numa função própria (tipo, "lerDados") e chame essa função em "inserir" e "alterar".
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D