Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: bigpuamo em 13 de Janeiro de 2014, 23:25

Título: Duvida shell script
Enviado por: bigpuamo em 13 de Janeiro de 2014, 23:25
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
Título: Re: Duvida shell script
Enviado por: zekkerj em 16 de Maio de 2014, 19:46
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".