Linux/Unix Shell Scripting - Crear una agenda con las siguientes características

 
Vista:

Crear una agenda con las siguientes características

Publicado por atxito (1 intervención) el 19/10/2018 16:46:02
Hola buenas tengo un problema con una tarea que tengo que realizar a ver si alguien me puede ayudar. El caso es el siguiente enunciado y tengo el siguiente código hecho

Crear un script para tener una base de datos con nombres, apellidos y teléfonos.

Los datos se guardarán en un array que posteriormente se volcará en un fichero llamado personal.txt

El script me mostrará un menú que me permita introducir datos de tantas personas como desee, buscar un dato de los almacenados, modificar cualquier dato, borrar datos y visualizar el listado.

1.- Introducir datos

Guardaré nombre, apellido y teléfono en un array que posteriormente volcaré en el fichero "personal.txt". Tendrá que darme la opción de meter tantos datos como quiera hasta que diga que no.

2.- Buscar datos (según un patrón)

Introduciré el patrón a buscar, puede ser cualquier dato (nombre, apellido o teléfono) y no tiene por qué ser exacto. Por ejemplo, Si quiero buscar "Jose" debo poder poner como patrón de búsqueda "jo" o "se" o "Ose" y me mostrará todas las coincidencias. No debe distinguir entre mayúsculas y minúsculas.

En caso de que el dato a buscar no exista, me lo indicará por pantalla.

3.- Modificar datos (según un patrón)

En este caso el patrón sí debe ser exacto el dato que busco (por ejemplo "Jose") pero no distingurá entre mayúsculas y minúsculas. Mostrará primero y modificará después todos los datos que coincidan con el patrón.

En caso de que el dato a modificar no exista, me lo indicará por pantalla.

4.- Borrar datos (según un patrón)

Igual que en el punto anterior pero borrando los datos en lugar de modificarlos. Primero mostrará las líneas coincidentes con el patrón y después borrará la línea completa con nombre, apellido y teléfono. Pedirá confirmación para borrar.

En caso de que el dato a borrar no exista, me lo indicará por pantalla.

5.- Visualizar listado

Mostrará el contenido de "personal.txt"

TENGO EL SIGUIENTE CÓDIGO PERO NO ME SALE. Muchas gracias por la ayuda.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/bash
 
FICHERO="personal.txt"
 
function Menu
{
   echo "_____________MENU_____________"
   echo ""
   echo "   1. Introducir Datos"
   echo "     2. Buscar Contacto"
   echo "     3. Modificar datos"
   echo "     4. Borrar datos"
   echo "      5. Listar datos"
   echo "         6. Salir"
}
 
function Introducir
{
   if [ -e "listado.txt" ]; then  #Si el fichero existe...
      echo "Introduzca datos de la persona: "
      read -p "Nombre:" NOMBRE
      read -p "Primer apellido: " APELLIDO1
      read -p "Telefono: " TELEFONO
 
      # Redireccionamos los datos introducidos al fichero de la agenda
      echo "$NOMBRE : $APELLIDO1 : $TELEFONO " >> $FICHERO
   else
      # Si no existe el fichero, damos el mensaje de error...
      touch listado.txt
      echo "Estamos creando el fichero..."
      sleep 1
      echo "Introduzca datos de la persona: "
      read -p "Nombre:" NOMBRE
      read -p "Primer apellido: " APELLIDO1
      read -p "Telefono: " TELEFONO
 
      # Redireccionamos los datos introducidos al fichero de la agenda
      echo "$NOMBRE : $APELLIDO1 : $TELEFONO " >> $FICHERO
   fi
 
   echo
}
 
function Buscar
{
      echo "Introduzca datos de la persona a buscar: "
      read -p "Dato: " DATO
      grep -i "$DATO" personal.txt
}
 
 
 
function modificar
{
    echo "Introduzca datos de la persona a buscar: "
    	  read -p "Dato: " DATO_VIEJO
        if [ `grep -c $DATO_VIEJO personal.txt` -eq 0 ]; then
 
		echo "El dato no exsiste"
	else
		echo "El fichero existe"
		echo -p "Introduce el nuevo dato" DATO_NUEVO
		sed -i "s/$DATO_VIEJO/$DATO_NUEVO/I" personal.txt
	fi
}
 
 
 
function borrar
{
     echo "Introduzca datos de la persona borrar: "
    	  read -p "Dato: " DATO
        if [ `grep -c $DATO personal.txt` -eq 0 ]; then
 
		echo "El contacto no exixte"
	else
		echo "El contacto existe"
		echo "Procedemos a borrarlo..."
		sleep 1
		sed "/$DATO/d" personal.txt
		echo -p "Hemos borrado el contacto"
 
	fi
}
 
function Listar
{
   cat $FICHERO
}
 
 
 
opc=0
salir=5
 
while [ $opc -ne $salir ];  # Mientras el valor de $opt es distinto del valor de $salir...
do
   clear
   Menu  # Dibujamos el menu en pantalla
   read -p "Opcion:..." opc  # Escogemos la opcion deseada
 
   if [ $opc -ge 1 ] && [ $opc -le 5 ]; then  # No se por que no funciona el rango...!!!!!!!!!!!!!!!!!!!!!!
      clear
      case $opc in   # Acciones para las diferentes opciones del menu
 
         1)Introducir
            ;;
 
         2)Buscar
            ;;
 
         3)modificar
            ;;
 
         4)borrar
            ;;
 
	 5)Listar
            ;;
 
         6)echo "Gracias por sus consultas"
            ;;
      esac
   else
      echo "No ha introducido una opcion correcta!!"
   fi
   echo "Pulse una tecla..."
   read
done
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder