Está en la página 1de 2

APLICACIÓN DE SISTEMAS OPERATIVOS

Docente: MSc. Ing. Jose Richard Ayoroa Cardozo

PRACTICA 6 (05/10/21)

Un profesor tiene las notas de los alumnos que se presentaron a un examen en un fichero de
texto.
Cada línea está compuesta por el login del alumno, un espacio y su calificación, que
siempre será apto o no apto
jperez apto
mgarcia no apto
asanchez no apto
mgomez apto
fcano apto (estos datos solo son de referencia)
Desea un script de shell bash que envía un correo electrónico a cada estudiante, con la
siguiente información:
• Su nota, esto es, la línea que le corresponda en el fichero anterior
• El numero de estudiantes presentados, así como el de aprobados

Ejemplo: Al estudiante ”mgomez” se le envía un correo similar a este:


mgomez apto. Presentados: 5, Aprobados: 3

(Este correo lo leerá un humano, así que no son relevantes los espacios, las
mayúsculas, etc)

Notas:
• El script recibirá en el argumento 1 de línea de comandos el nombre del fichero con
las notas
• La dirección de cada estudiante es: login@pantuflo.es
• En una maquina Unix, se puede enviar un correo mediante el comando mail,
pasando:
• El cuerpo del correo por la entrada estándar
• El destinatario del correo en el argumento 1 de línea de comandos
• Si el script no recibe el nombre del fichero, debe mostrar un error y
finalizar.

CONSIDERACIONES:

• Identifique los comandos y otros usados en la solución de cada uno de estos


problemas y describa la función de cada uno de ellos.
• Implemente la solución del ejercicio.
• Desarrolle una interfaz para el programa.
APLICACIÓN DE SISTEMAS OPERATIVOS
Docente: MSc. Ing. Jose Richard Ayoroa Cardozo

• Entrega del informe (digital), del programa y defensa de la práctica, Lunes 11 de


Octubre.

Solución
#!/bin/bash
if test $# -ne 1
then echo Uso: >&2
echo $0 fichero_de_notas>&2
exit
fi
suspensos=$(cat $1 | grep "no apto" | wc -l)
presentados=$(cat $1 | wc -l)
aprobados=$(($presentados - $suspensos))

logins=$(cat $1 | cut -d’ ’ -f1 )

for login in $logins


do
su_nota=$(grep $login $1)
estadisticas="Presentados: $presentados, Aprobados:$aprobados"
echo $su_nota. $estadisticas | mail $login@pantuflo.es
done

Observaciones:
• echo Uso: >&2
redirige la salida de echo a stderr

• El filtro
grep apto
encaja tanto en la cadena apto como en la cadena no apto
• El filtro
grep no
encaja tanto en la cadena no apto como en la cadena fcano

También podría gustarte