Para aprovechar algún tiempo que me sobró durante la realización del proyecto de la biblioteca, decidí realizar el mismo proyecto sobre la consola de un sistema Linux utilizando bash. Esto me ha permitido recordar un poco la sintaxis de este lenguaje de scripting, del que ya tenía algo de conocimientos. Además, hay que decir que la potencia de los lenguajes de script en la consola de Linux son mucho más potentes que la de MS-DOS.
Para ahorrar tiempo he tratado de traducir directamente los scripts de un lenguaje a otro. En algunos casos la semejanza entre los dos códigos es evidente pero en otros es completamente inexistente. Sin embargo, la lógica es la misma en los dos casos y por tanto los diagramas serían aplicables en los dos casos.
COMPROBAR EXISTENCIA DE DIRECTORIOS
#!/bin/bash
if [ ! -d "LIBROS" ]
then
mkdir LIBROS
fi
if [ ! -d "PRESTAMOS" ]
then
mkdir PRESTAMOS
fi
if [ ! -d "LISTADOS" ]
then
mkdir LISTADOS
fi
if [ ! -d "LIBROS" ]
then
mkdir LIBROS
fi
if [ ! -d "PRESTAMOS" ]
then
mkdir PRESTAMOS
fi
if [ ! -d "LISTADOS" ]
then
mkdir LISTADOS
fi
MENÚ
#!/bin/bash
./ComprobarDirs.sh
while [ false ]; do
clear
echo "1) Añadir libro"
echo "2) Prestar libro"
echo "3) Listar todos (ordenados por signatura)"
echo "4) Listar todos (ordenados alfabéticamente)"
echo "5) Listar prestados"
echo "6) Listar amigos con préstamos"
echo "7) Devolver libros"
echo "8) Buscar libro"
echo "9) Salir"
echo -e "Elija una opción: \c"
read opcion
echo "La opción elegida es: $opcion"
if [ $opcion -eq 1 ]; then
./AnadirLibro.sh
fi
if [ $opcion -eq 2 ]; then
./PrestarLibro.sh
fi
if [ $opcion -eq 3 ]; then
./ListarLibSig.sh
fi
if [ $opcion -eq 4 ]; then
./ListarLibAlf.sh
fi
if [ $opcion -eq 5 ]; then
./ListarLibPrest.sh
fi
if [ $opcion -eq 6 ]; then
./ListarAmigosPrest.sh
fi
if [ $opcion -eq 7 ]; then
./DevolverLibros.sh
fi
if [ $opcion -eq 8 ]; then
./BuscarLibro.sh
fi
if [ $opcion -eq 9 ]; then
exit
fi
done
./ComprobarDirs.sh
while [ false ]; do
clear
echo "1) Añadir libro"
echo "2) Prestar libro"
echo "3) Listar todos (ordenados por signatura)"
echo "4) Listar todos (ordenados alfabéticamente)"
echo "5) Listar prestados"
echo "6) Listar amigos con préstamos"
echo "7) Devolver libros"
echo "8) Buscar libro"
echo "9) Salir"
echo -e "Elija una opción: \c"
read opcion
echo "La opción elegida es: $opcion"
if [ $opcion -eq 1 ]; then
./AnadirLibro.sh
fi
if [ $opcion -eq 2 ]; then
./PrestarLibro.sh
fi
if [ $opcion -eq 3 ]; then
./ListarLibSig.sh
fi
if [ $opcion -eq 4 ]; then
./ListarLibAlf.sh
fi
if [ $opcion -eq 5 ]; then
./ListarLibPrest.sh
fi
if [ $opcion -eq 6 ]; then
./ListarAmigosPrest.sh
fi
if [ $opcion -eq 7 ]; then
./DevolverLibros.sh
fi
if [ $opcion -eq 8 ]; then
./BuscarLibro.sh
fi
if [ $opcion -eq 9 ]; then
exit
fi
done
AÑADIR LIBROS
#!/bin/bash
echo -e "\nIntroduzca la signatura del libro: "
read signatura
echo -e "\nIntroduzca el título: "
read titulo
echo -e "\nIntroduzca el nombre del autor: "
read autor
fichero="$signatura.lib"
echo -e "$titulo - $autor" > "LIBROS/$fichero"
echo -e "El libro ha sido incluido en la biblioteca"
read -p "Pulse para continuar..."
echo -e "\nIntroduzca la signatura del libro: "
read signatura
echo -e "\nIntroduzca el título: "
read titulo
echo -e "\nIntroduzca el nombre del autor: "
read autor
fichero="$signatura.lib"
echo -e "$titulo - $autor" > "LIBROS/$fichero"
echo -e "El libro ha sido incluido en la biblioteca"
read -p "Pulse
PRESTAR LIBROS
#!/bin/bash
echo -e "Introduzca el título del libro: "
read titulo
echo -e "Introduzca el nombre del autor: "
read nombreAutor
echo -e "Introduzca el nombre de su amigo: "
read nombreAmigo
fecha=`date +"%m/%d/%Y"`
echo -e "$titulo - $nombreAutor $fecha" > "PRESTAMOS/$nombreAmigo.pre"
echo -e "\nEl préstamo ha sido guardado"
read -p "Pulse para continuar..."
echo -e "Introduzca el título del libro: "
read titulo
echo -e "Introduzca el nombre del autor: "
read nombreAutor
echo -e "Introduzca el nombre de su amigo: "
read nombreAmigo
fecha=`date +"%m/%d/%Y"`
echo -e "$titulo - $nombreAutor $fecha" > "PRESTAMOS/$nombreAmigo.pre"
echo -e "\nEl préstamo ha sido guardado"
read -p "Pulse
LISTAR LIBROS POR SIGNATURA
#!/bin/bash
if [ -f LISTADOS/ListadoLibrosSig.txt ]; then
rm LISTADOS/ListadoLibrosSig.txt
fi
for f in $( ls LIBROS/*.lib | sort ); do
# nombreLargo=${f%.*}
# nombre=${nombreLargo##*/}
lineaFichero=`cat $f`
titulo=${lineaFichero%-*}
#echo -e "$titulo"
echo -e "$titulo" >> LISTADOS/ListadoLibrosSig.txt
done
echo -e "\n******************************************"
echo -e "+++ LISTADO LIBROS POR SIGNATURA +++"
echo -e "******************************************"
cat LISTADOS/ListadoLibrosSig.txt
read -p "Pulse para continuar..."
if [ -f LISTADOS/ListadoLibrosSig.txt ]; then
rm LISTADOS/ListadoLibrosSig.txt
fi
for f in $( ls LIBROS/*.lib | sort ); do
# nombreLargo=${f%.*}
# nombre=${nombreLargo##*/}
lineaFichero=`cat $f`
titulo=${lineaFichero%-*}
#echo -e "$titulo"
echo -e "$titulo" >> LISTADOS/ListadoLibrosSig.txt
done
echo -e "\n******************************************"
echo -e "+++ LISTADO LIBROS POR SIGNATURA +++"
echo -e "******************************************"
cat LISTADOS/ListadoLibrosSig.txt
read -p "Pulse
LISTAR LIBROS ALFABÉTICAMENTE
#!/bin/bash
if [ -f LISTADOS/ListadoLibAlf.txt ]; then
rm LISTADOS/ListadoLibAlf.txt
fi
echo -e "************************************************"
echo -e "+++ LISTADO LIBROS ORDENADOS ALFABÉTICAMENTE +++"
echo -e "************************************************"
for f in $( ls LIBROS/*.lib ); do
lineaFichero=`cat $f`
titulo=${lineaFichero%-*}
echo -e "$titulo" >> LISTADOS/ListadoLibAlf.txt
done
cat LISTADOS/ListadoLibAlf.txt | sort > kk.tmp
mv kk.tmp LISTADOS/ListadoLibAlf.txt
cat LISTADOS/ListadoLibAlf.txt
read -p "Pulse para continuar..."
if [ -f LISTADOS/ListadoLibAlf.txt ]; then
rm LISTADOS/ListadoLibAlf.txt
fi
echo -e "************************************************"
echo -e "+++ LISTADO LIBROS ORDENADOS ALFABÉTICAMENTE +++"
echo -e "************************************************"
for f in $( ls LIBROS/*.lib ); do
lineaFichero=`cat $f`
titulo=${lineaFichero%-*}
echo -e "$titulo" >> LISTADOS/ListadoLibAlf.txt
done
cat LISTADOS/ListadoLibAlf.txt | sort > kk.tmp
mv kk.tmp LISTADOS/ListadoLibAlf.txt
cat LISTADOS/ListadoLibAlf.txt
read -p "Pulse
LISTAR AMIGOS CON PRÉSTAMOS
#!/bin/bash
if [ -f LISTADOS/ListadoAmigosPrest.txt ]; then
rm LISTADOS/ListadoAmigosPrest.txt
fi
for f in $( ls PRESTAMOS/*.pre | sort ); do
ruta=${f##*/}
nombreAmigo=${ruta%.*}
echo -e "$nombreAmigo" >> LISTADOS/ListadoAmigosPrest.txt
done
echo -e "\n**************************************************"
echo -e "+++ LISTADO ALFABÉTICO DE AMIGOS CON PRÉSTAMOS +++"
echo -e "**************************************************"
cat LISTADOS/ListadoAmigosPrest.txt
read -p "Pulse para continuar..."
if [ -f LISTADOS/ListadoAmigosPrest.txt ]; then
rm LISTADOS/ListadoAmigosPrest.txt
fi
for f in $( ls PRESTAMOS/*.pre | sort ); do
ruta=${f##*/}
nombreAmigo=${ruta%.*}
echo -e "$nombreAmigo" >> LISTADOS/ListadoAmigosPrest.txt
done
echo -e "\n**************************************************"
echo -e "+++ LISTADO ALFABÉTICO DE AMIGOS CON PRÉSTAMOS +++"
echo -e "**************************************************"
cat LISTADOS/ListadoAmigosPrest.txt
read -p "Pulse
DEVOLVER LIBROS
#!/bin/bash
#Obtenemos el nombre del amigo que devuelve los libros y eliminamos del
#directorio PRESTAMOS el archivo cuyo nombre se corresponede con el de
#dicho amigo
echo -e "Introduzca el nombre del amigo: "
read amigo
if [ -f "PRESTAMOS/$amigo.pre" ]; then
rm "PRESTAMOS/$amigo.pre"
echo -e "Los libros han sido devueltos"
else
echo -e "El amigo no existe o no tiene libros prestados\n"
fi
read -p "Pulse para continuar..."
#Obtenemos el nombre del amigo que devuelve los libros y eliminamos del
#directorio PRESTAMOS el archivo cuyo nombre se corresponede con el de
#dicho amigo
echo -e "Introduzca el nombre del amigo: "
read amigo
if [ -f "PRESTAMOS/$amigo.pre" ]; then
rm "PRESTAMOS/$amigo.pre"
echo -e "Los libros han sido devueltos"
else
echo -e "El amigo no existe o no tiene libros prestados\n"
fi
read -p "Pulse
BUSCAR LIBROS
#!/bin/bash
echo -e "Introduzca el título a buscar: "
read tituloBuscado
cat LIBROS/*.lib |grep "$tituloBuscado" >temp.tmp
encontrado=`stat -c%s "temp.tmp"`
if [ $encontrado -eq 0 ]; then
echo -e "No se ha encontrado el libro indicado\n"
else
echo -e "El libro se encuentra en la biblioteca\n"
fi
rm temp.tmp
read -p "Pulse para continuar..."
echo -e "Introduzca el título a buscar: "
read tituloBuscado
cat LIBROS/*.lib |grep "$tituloBuscado" >temp.tmp
encontrado=`stat -c%s "temp.tmp"`
if [ $encontrado -eq 0 ]; then
echo -e "No se ha encontrado el libro indicado\n"
else
echo -e "El libro se encuentra en la biblioteca\n"
fi
rm temp.tmp
read -p "Pulse
No hay comentarios:
Publicar un comentario