Linux/Unix Shell Scripting - Cree un shell script llamado agenda al que se le pasará un argumento

   
Vista:

Cree un shell script llamado agenda al que se le pasará un argumento

Publicado por andres (2 intervenciones) el 27/01/2015 20:04:00
hola muy buenas soy un estudiante de informatica y me gustaria saber si alguien sabe hacer este scrpit. Si os sale pasame la solucion que me va a volver loco gracias.


Cree un shell script llamado agenda al que se le pasará un argumento (opcional), que será
el nombre de chero que se usará para almacenar la información (si se omite el argumento,
el chero será agenda.dat, creándose en blanco si no existe). Cada línea del chero tendrá el
siguiente formato:
nombre:localidad:saldo:teléfono
Cuando se ejecute el shell script mostrará un prompt para poder introducir las distintas opciones
disponibles:
AGENDA (Introduzca opción. ’h’ para ayuda) >>
Las opciones que debe soportar son:
h: mostrará ayuda de todas las opciones.
q: para salir de la agenda.
l: listará el chero de la agenda en columnas:
----------------- AGENDA -----------------------------
Nombre Localidad Saldo Teléfono
-------- ---------- ------- --------
Juan Ruiz Cartagena 134 968507765
Jaime López Málaga 95 952410455
.....
Ana Martínez Madrid 945 914678984

on: ordenará la agenda por nombre ascendentemente. La ordenación no se mostrará y quedará en el fichero. Para ver la ordenación habrá que ejecutar l después.
os: ordenará la agenda por saldo descendentemente (¡ojo!, numéricamente). La ordenación no se mostrará y quedará en el chero. Para ver la ordenación habrá que ejecutar l después.
a: añadirá una línea. Para ello el shell script debe preguntar por el nombre, localidad, saldo y teléfono, comprobando que ninguno de los campos quede en blanco. Una vez introducidos todos los datos de una nueva línea, debe añadirse al nal del chero de la agenda. Como mejora, antes de introducir la nueva línea se puede comprobar que no existe ninguna otra con el mismo nombre de persona.
b: borrará una línea. Para ello el shell script debe preguntar el nombre exacto de la persona correspondiente. Una vez introducido éste se debe eliminar la línea o líneas que tengan ese nombre exactamente (pueden ser varias si en el punto anterior se permiten líneas con el mismo nombre). Antes de proceder con el borrado debe pedir conrmación.


muchas GRACIAS
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

Cree un shell script llamado agenda al que se le pasará un argumento

Publicado por jose (2 intervenciones) el 27/01/2015 21:10:36
yo el menu lo haria con un case
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Cree un shell script llamado agenda al que se le pasará un argumento

Publicado por xve (253 intervenciones) el 28/01/2015 08:06:17
Hola Andres, que parte tienes realizada? o en que punto te has quedado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cree un shell script llamado agenda al que se le pasará un argumento

Publicado por andres (2 intervenciones) el 28/01/2015 18:02:26
hola xve la verdad que si me lo pasa bien explicado por la verdad es que estoy algo perdido, y estoy mirando por internet y no encuentro nada. gracias un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cree un shell script llamado agenda al que se le pasará un argumento

Publicado por UNA MAQUINA DE SCRIPT (2 intervenciones) el 28/01/2015 20:33:33
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
#!/bin/bash
 
fichero=agenda.dat
salida=0
while [ $salida = 0 ]; do
	echo agenda: Indroduzca una opcion. Pulse h para ayuda
	read opcion
case $opcion in
	h)
	echo -h: mostrara la ayuda de las opciones.
	echo -q: salir de la agenda.
	echo -l: lista el fichero de la agenda.
	echo -on: ordenara la agenda por saldo ascendente.
	echo -os: ordenara la agenda por saldo descendente.
	echo -a: añadira una linea.
	echo -b: Borrar*
;;
	q)
	echo Gracias por usar nuesta agenda
	salida=1
;;
	l)
if [ -s $fichero ]; then
	echo -------------------AGENDA------------------
        echo Nombre	Localidad	Saldo	Télefono
        echo ------	---------	-----	--------
 
	for linea in $(cat $fichero)
	do
		echo -e "${linea//:/ }"
	done
else
	echo  el fichero no existe o esta vacio.
	echo Se procedera a su creacion.
	touch agenda.dat
	chmod 770 agenda.dat
fi
;;
on)
	sort -o $fichero $fichero
	echo Se ha ordenado por nombre ascendentemente.
;;
os)
	sort -t":" -k3nr -o $fichero -u $fichero
	echo Se ha ordenado por saldo descendente.
;;
a)
	echo -e nombre del contacto:
	read nombre
	echo -e Localidad del contacto:
	read localidad
	echo -e Saldo de contato:
	read saldo
	echo -e Telefono de contacto:
	read telefono
	if [ -z $nombre ] || [ -z $localidad ] || [ -z $saldo ] || [ -z $telefono ]; then
	echo "Todos los campos son obligatorios"
	fi
 
	comprobacion=`cut -f 1 -d ":" agenda.dat | grep $nombre`
	if [ $comprobacion == $nombre ]; then
		echo El nombre existe
	else
		echo $nombre:$localidad:$saldo:$telefono>>$fichero
	fi
esac
done
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar