====== Examen Parcial - 75.08. Sistemas Operativos ====== **Cátedra:** Osvaldo Clua\\ **Fecha:** Primera oportunidad - Primer Cuatrimestre 2005\\ **Día:** 24/05/2005\\ **Tema:** UNIX Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== El Fondo Monetario Internacional recibe informes de los organismos internacionales de crédito (BID, Banco Mundial, etc) en donde se indica: * Código de Beneficiario * Código de Préstamo * Monto del Préstamo * Fecha de disponibilidad (aaaammdd) * Fecha de caducidad (aaaammdd) Si el archivo lo envia el BID, el nombre es BIDnnnn, donde nnnn es un número de 4 dígitos secuencial. Si el archivo lo envia el Banco Mundial, el nombre es BMnnnn, donde nnnn es un número de 4 dígitos secuencial. Para validar al Beneficiario cuenta con una tabla (1 a n registros) con la siguiente información: * Código * Nombre Ejemplo:\\ \begin{array}{|c|c|} \hline 613 & \mbox{Argentina}\\ \hline 615 & \mbox{Peru}\\ \hline \end{array} **Se pide:** Desarrollar un comando que reciba como parámetro el nombre del archivos, que se quiere procesar (parámetro obligatorio) y un código de beneficiario (parámetro opcional). Si el código de Beneficiario no se ingresa, tomar como valor de defecto el 613 qe corresponde a Argentina (pais que siempre es necesario monitorear) y grabe un archivo de salida (**salida.txt**) con la siguiente información:\\ El (BID o BM segú corresponda) ha puesto en disponibiliadd en (nombre del beneficiario) en el correinte año u$s xx(suma de los montos de préstamos con fecha de disponibilidad en el corriente año) dolares. Validar el nombre del archivo de acuerdo al formato especificado y el parámetro opcional si este es ingresado. **Ejemplo:**\\ El BID ha puesto en disponibilidad en Republica Argentina en el corriente año u$s 2.346.000 dolares ===== Resolución ===== #!/bin/bash TABLA_PAISES="paises.tab" function obtenerDescripcionPais() { pais=$1 desc=`grep -E $pais "$TABLA_PAISES" | tr -d [0123456789,]` if ! [ -z $desc ] then pais=$desc fi } beneficiario=613 if [ $# -ne 1 ] && [ $# -ne 2 ] then echo "Uso: `basename $0` archivo [beneficiario]" exit 1 fi archivo=$1 if ! [ -z $2 ] then beneficiario=$2 fi echo $archivo | grep -qE ^\(BID\|BM\)[0-9]{4}$ if [ $? -ne 0 ] then echo "El nombre de archivo $archivo no es valido" exit 1 fi echo $beneficiario | grep -qE ^[0-9]*$ if [ $? -ne 0 ] then echo "El codigo de beneficiario $beneficiario no es valido" exit 1 fi monto=0 anio=`echo $archivo | tr -d [:alpha:]` # Código de Beneficiario;Código de Préstamo;Monto del Préstamo;Fecha de disponibilidad (aaaammdd);Fecha de caducidad (aaaammdd) lineas=`grep -E ^$beneficiario\;[0-9]*\;[0-9]*\.[0-9]{2}\;$anio $archivo` for linea in $lineas do BACKUP=$IFS IFS=\; campos=(${linea[@]}) monto=`echo "$monto+${campos[2]}" | bc` IFS=$BACKUP done obtenerDescripcionPais $beneficiario organismo=`echo $archivo | tr -d [:digit:]` echo "El $organismo ha puesto en disponibilidad en $pais en el corriente año u\$s $monto"