Agenda Shell Script [RESOLVIDO]

1. Agenda Shell Script [RESOLVIDO]

Eric Matthews
codicarlys

(usa Ubuntu)

Enviado em 21/08/2012 - 15:54h

Olá, eu já tentei de tudo, mas não to conseguindo excluir nem alterar contato. Se alguém puder me ajudar eu agradeço.
segue o script abaixo:

#!/bin/bash

# Menu
principal (){
echo "Escolha sua opção:"
echo "1-Adiocionar Contato"
echo "2-Alterar Contato"
echo "3-Lista de Contatos"
echo "4-Excluir Contato"
echo "5-Sair"
read opcao
clear

case $opcao in
1) Adicionar ;;
2) Alterar ;;
3) Listar ;;
4) Excluir ;;
5) Sair ;;
esac
}
# listar Contatos
Listar(){
cat /home/eric/Contatos.txt
echo "digite qualquer tecla para voltar ao menu inicial"
read
clear
principal
}

# Adicionar Contato
Adicionar (){
echo " "
echo "Nome contato:"; read nome;
echo "Endereço:"; read end;
echo "Telefone:"; read tel;
echo $nome", "$end", "$tel >> Contatos.txt
clear
principal
}


# Alterar Contato
Alterar(){
echo "Digite o contato a ser alterado";
read cont
echo "Tem certeza que deseja alterar" ` grep -i $cont Contatos.txt`" ? (s/n) "
read confirma

if [ $confirma == s -o $confirma == S ];then
echo ;
echo "Novo Contato"; read nome;
echo "Novo endereço"; read end;
echo "Novo telefone"; read tel;
nv_linha=$nome", "$end", "$tel;
linha= `grep -i $nome Contatos.txt`
cat /home/eric/Contatos.txt | sed 's/$linha/$nv_linha/'
fi
clear
principal
}

Excluir() {
echo "Digite o contato a ser deletado"
read nome
echo "Tem certeza que deseja excluir `cat /home/eric/Contatos.txt|grep -in $nome` ? (s/n)"
linha= grep -in $nome Contatos.txt
read confirma
if [ $confirma=="S" -o $confirma=="s" ] ;then
sed '/$linha/d' Contatos.txt
fi
clear
principal
}

Sair(){
exit
}

clear
principal



  


2. Re: Agenda Shell Script [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 21/08/2012 - 21:48h

Quando você faz o "grep -i" você não aponta o diretório que está o arquivo Contatos.txt. Recomendo que além do parametro -i, você adicione o parametro -w (word,palavra exata).

Além disse, para saber onde está errado, rode o script em modo debug:

# bash -x script.sh



3. Re: Agenda Shell Script [RESOLVIDO]

Eric Matthews
codicarlys

(usa Ubuntu)

Enviado em 23/08/2012 - 17:16h

Eu consegui depois de muito tempo de pesquisa resolver aqui está o script pronto.

#!/bin/bash

# Menu
principal (){
echo "Agenda Pessoal"
echo "Escolha sua opção:"
echo "1-Adiocionar Contato"
echo "2-Alterar Contato"
echo "3-Lista de Contatos"
echo "4-Excluir Contato"
echo "5-Sair"
read opcao

# apagando linhas em branco
sed -i '/^$/d' Contatos.txt
clear

case $opcao in
1) Adicionar ;;
2) Alterar ;;
3) Listar ;;
4) Excluir ;;
5) Sair ;;
esac
}

# listar Contatos
Listar(){
cat /home/eric/Contatos.txt
echo "digite qualquer tecla para voltar ao menu inicial"
read
clear
principal
}

# Adicionar Contato
Adicionar (){
echo " "
echo "Nome contato:"; read nome;
echo "Endereço:"; read end;
echo "Telefone:"; read tel;
echo $nome","$end","$tel >> Contatos.txt
clear
principal
}
# Alterar Contato
Alterar(){
echo "Digite o contato a ser alterado";
read cont
echo "Tem certeza que deseja alterar" ` grep -i $cont Contatos.txt`" ? (s/n) "
read confirma

if [ $confirma = "s" -o $confirma = "S" ];then
echo ;
echo "Novo Contato"; read nome;
echo "Novo endereço"; read end;
echo "Novo telefone"; read tel;
nv_linha=$nome","$end","$tel
linha=`grep -i $cont Contatos.txt`
sed -i "s/${linha}/${nv_linha}/" Contatos.txt
fi
clear
principal
}

Excluir() {
echo "Digite o contato a ser deletado"
read nome
echo "Tem certeza que deseja excluir `cat /home/eric/Contatos.txt|grep -i $nome` ? (s/n)"
read confirma
linha=`grep -i $nome Contatos.txt`
if [ $confirma == "S" -o $confirma == "s" ];then
sed -i "/$linha/d" Contatos.txt
fi
clear
principal
}

Sair(){
exit
}

clear
principal
Type :quit<En






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts