Cátedra: Osvaldo Clua
Fecha: Primera oportunidad - Primer Cuatrimestre 2005
Día: 24/05/2005
Tema: UNIX
El Fondo Monetario Internacional recibe informes de los organismos internacionales de crédito (BID, Banco Mundial, etc) en donde se indica:
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:
Ejemplo:
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
#!/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"