Título: Necestio ayuda con un programa de Unix shell Publicado por: Alfonsoo01 en 7 Enero 2020, 16:18 pm 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 automatica de practicas de una asignatura. Las ideas principales son: -El script a desarrollar entendera que cada practica tiene un identificador de practica. -El script utilizarŽa el identificador de practica para conocer la informacion relacionada con dicha prŽactica: ficheros a entregar y directorio de entrega. Informacion que habra 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). La siguiente parte explica de forma mas especifica lo que hay que hacer: El script deberŽa ser ejecutado mediante el siguiente mandato: minientrega.sh ID_PRACTICA o bien, en una configuraciŽon mas habitual ./minientrega.sh ID_PRACTICA ID_PRACTICA es una ristra de caracteres que representa el hipotŽetico nombre de una practica (por ejemplo prac1, prac7, bucles, etc.). El script comprobara que el identificador de practica (ID_PRACTICA) es valido, comprobara que existen los ficheros exigidos para la practica identificada por ese identificador de practica y finalmente copiara todos los ficheros a un directorio adecuado. El script devolverŽa 0 como codigo de error para indicar que todo funcion o correctamente o un codigo de error distinto de 0 indicando quŽe error se produjo. El script no esperarŽa ninguna informacion a traves de la entrada estŽandar ni provocarŽa la emision de mensajes en la salida estŽandar ni en la salida de error excepto los propios de la ayuda o de la imposibilidad de la entrega, respectivamente. Mas detalles: --Si el script ha sido invocado sin argumentos o con mas de uno se informara al usuario con un mensaje de dos lıneas en la salida de error siguiendo el formato mostrado por este ejemplo: 1 $ ./minientrega.sh minientrega.sh: Error(EX_USAGE), uso incorrecto del mandato. "Success" minientrega.sh+ <<descripcion detallada del error>> Ademas, debe finalizar con un exit status 64 --La variable de entorno MINIENTREGA_CONF debe estar definida antes de ejecutar el script. Dicha variable debe contener el nombre de un directorio en el que existen varios ficheros de configuracion de practicas. En caso de que la variable no represente un directorio legible se informarŽa al usuario con exit status 64 (Nota: vuestro script no debe definir dicha variable). Ademas, se mandarŽa un mensaje de error (ver ejemplo). Por ejemplo, si ./mal no es un directorio legible y se ejecutan las dos instrucciones siguientes, debe salir por la salida de error: $ declare -x MINIENTREGA_CONF=./mal $ minientrega.sh unargumento minientrega.sh: Error, no se pudo realizar la entrega minientrega.sh+ no es accesible el directorio "./mal" --Si MINIENTREGA_CONF representa un directorio accesible, entonces cada nombre de fichero (que sea accesible) de este directorio (y solo ellos) es un identificador vŽalido de prŽactica. Si el identificador de la prŽactica (ID_PRACTICA) no es vŽalido se informarŽa al usuario con un exit status 66. AdemŽas, debe salir por la salida de error: $ declare -x MINIENTREGA_CONF=./bien $ minientrega.sh novale minientrega.sh: Error, no se pudo realizar la entrega minientrega.sh+ no es accesible el fichero "novale" --Cada fichero en ${MINIENTREGA_CONF}/* define las siguientes variables en formato compatible con Bash: ----MINIENTREGA_FICHEROS: contiene la lista de ficheros que deben ser entregados y que deben estar en el directorio de trabajo desde el que se ejecuta el script. En caso de que alguno de los ficheros no exista o no sea legible se informara al usuario con un exit status 66. Ademas, debe salir por la salida de error: minientrega.sh: Error, no se pudo realizar la entrega minientrega.sh+ no es accesible el fichero "malfichero" donde malfichero es el primer fichero de lista de ficheros que deben ser entregados que bien no existe o no es accesible. ----MINIENTREGA_DESTINO: directorio de destino en el que se debe crear un subdirectorio de entrega para la prŽactica identificada por el identificador de practica ID_PRACTICA. El nombre del directorio a crear serŽa el nombre del usuario que ejecuta el script (${USER}). En caso de que el directorio de destino no exista o el directorio de entrega no pueda crearse se informarŽa al usuario con un exit status 73.AdemŽas, debe salir por la salida de error: minientrega.sh: Error, no se pudo realizar la entrega minientrega.sh+ no se pudo crear el subdirectorio de entrega en "maldirectorio" suponiendo que maldirectorio es el directorio destino. Este es el cogido que llevo hasta ahora, pero no me funciona bien: Código: #/bin/bash |