Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
(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:
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))
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