Busco ayuda para hcer un programa de unix shell

Denunciar
Message postés
1
Date d'inscription
martes, 7 de enero de 2020
Estatus
Miembro
Última intervención
martes, 7 de enero de 2020
-
Hola,
me encuentro haciendo mi primer programa en Unix shell y estoy un poco bloqueado.

Debo hacer lo siguiente


El script implementara un supuesto mecanismo de entrega automática de
practicas de una asignatura. Las ideas principales son:
-El script a desarrollar entenderá que cada practica tiene un identificador de practica.

-El script utilizar´a el identificador de practica para conocer la información relacionada con
dicha practica: ficheros a entregar y directorio de entrega. Información que habrá que
extraer de un fichero con el mismo nombre que el identificador de practica.

-La labor principal del script sera copiar los ficheros apropiados de un directorio (del supuesto usuario del script) a otro directorio (directorio de entrega).

El codigo que llevo hasta ahora es este:

#/bin/bash


#se comprueba el numero de argumentos
if [ $# -ne "1" ]; then
echo "$0: Error (EX_USAGE), uso incorrecto del mandato. \"Succes\"" >&2
echo "$0+ El numero de argumentos recibidos no es el esperado" >&2
exit 64;
fi


# se comprueba si quiere ayuda
if [ $1 == '-h' -o $1 == '--help' ]; then
echo "$0: --help para la ayuda"
echo "$0+ Copia archivos de un directorio a otro"
exit 0;
fi


# se comprueba la existencia de MINIENTREGA_CONF
if test -z ${MINIENTREGA_CONF}; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ No es accesible el directorio ">&2
exit 64;
fi


# se comprueba que MINIENTREGA_CONF es un directorio
if test ! -d ${MINIENTREGA_CONF}; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ No es un directorio ">&2
exit 64;
fi


#se comprueba que la variable MINIENTREGA_CONF se puede leer lectura

if test ! -r ${MINIENTREGA_CONF}; then
echo "$0: Error, no se pudo realizar la entrega" >&2
echo "$0+ no se puede leer el directorio ">&2
exit 64;
fi


#se comprueba que se puede escribir en el directorio
if test ! -w ${MINIENTREGA_CONF}; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ no se puede escribir en el directorio ">&2
exit 64;
fi


#se comprueba que se puede leer el argumento
if test ! -r ${MINIENTREGA_CONF}/$1; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ no se puede acceder al fichero $1 ">&2
exit 66;
fi
source ${MINIENTREGA_CONF}/$1


#se comprueba que la fecha estea en el formato correcto
if [ ${#MINIENTREGA_FECHALIMITE} -ne 10 ]; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ La fecha es incorrecta ${MINIENREGA_FECHALIMITE}">&2
exit 64;
fi
if ! [[ ${MINIENTREGA_FECHALIMITE:4:1} == '-' && ${MINIENTREGA_FECHALIMITE:7:1} == '-' ]]; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ La fecha es incorrecta ${MINIENTREGA_FECHALIMITE}">&2
exit 0;
fi
if [ ${MINIENTREGA_FECHALIMITE:0:4} -gt 10 ]; then
echo " $0: Error, no se pudo realizar la entrega">&2
echo "$0+ La entrega esta fuera de plazo">&2
exit 0;

fi
if [ ${MINIENTREGA_FECHALIMITE:0:4} -gt 10 -a ${MINIENTREGA_FECHALIMITE:5:2}-ne 01 ]; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ La entrega esta fuera de plazo">&2
exit 66;
fi
if [ ${MINIENTREGA_FECHALIMITE:0:4} -gt 10-a ${MINIENTREGA_FECHALIMITE:7:2}-ne 01 ]; then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ La entrega esta fuera de plazo">&2
exit 73;
fi


#se comprueban los archivos
for fichero in ${MINIENTREGA_FICHEROS[0]}; do
if !(test -r $fichero) || !(test -e $fichero); then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ No es accesible el fichero $fichero">&2
exit 66;
fi
done


#Existe el directorio de destino
if test ! -d ${MINIENTREGA_DESTINO} || test ! -w ${MINIENTREGA_DESTINO};then
echo "$0: Error, no se pudo realizar la entrega">&2
echo "$0+ No se pudo crear el subdirectorio de entrega en ${MINIENTREGA_DESTINO}">&2
exit 73;
fi


#copia los archivos
cp ${MINIENTREGA_FICHEROS}/* ${MINIENTREGA_DESTINO}/${USER}
exit 0;



Configuración: Linux / Chrome 79.0.3945.79