Introducción a Ejercicios Shell Scripts Resueltos (Relación 1 ejercicios )

1.- Introducción.

Shell que significa en Castellano “concha” es el intérprete de comandos del sistema. Es una interfaz de texto de altas prestaciones, que sirve fundamentalmente para tres cosas:

  • Administrar el sistema operativo.
  • Lanzar aplicaciones (e interactuar con ellas).
  • Como entorno de programación.

https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcT12tweurXH_0meTOTreB6LCd2gfzuvNkaAHZFemxAkj8RwWiBo

Gnu/Linux se administra editando ficheros configuración. Como norma general, se encuentran en: /etc. Los programas de Shell no necesitan compilarse, la Shell los interpreta línea a línea. Se les suele conocer como Shells Scripts y pueden ser desde sencillas órdenes hasta complejas series de instrucciones para el arranque del propio sistema operativo.

2.- Al lío.

https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTja1Pdwhzsk_3SJdTMp5msXLSNCFTKWgFFZ3gZS_rBdRhDDgVw

Los scripts de Shell son extremadamente útiles. Es un archivo de texto, que contiene una serie de comandos para shell, que el sistema ejecuta ordenadamente, de arriba-abajo. Para editarlos, tan solo hace falta un editor de textos, como emacs, nano o vi (para los más atrevidos).

Se guardan con extensión .sh y se ejecutan desde la Shell mediante el comando:

sh nombre_de_script.sh

o bien

. nombre_script.sh.

Eso sería lo correcto, pero pueden guardarse sin la extensión .sh, lo que pasa es que ya no podríamos ejecutarlos sin .

Los scripts, se comportan de igual manera que los comandos de la shell. El primer paso para trabajar con una Shell es ejecutar una shell. En algunas distribuciones de Gnu/Linux muy enfocadas al usuario final, es decir, las de entorno gráfico, la shell está bastante escondida.

Normalmente, se llama: Konsole, terminal, terminal de X, o algo similar. Se suele incluir en el menú k de Kde, en el apartado sistema. Otra opción es utilizar una consola virtual. Mediante:

Ctrl+alt+f1, o f2, o f3 hasta f6, podemos utilizar entornos shell, sin interfaz gráfica.

La Shell más utilizada en Gnu/Linux es Bash, aunque existen otras, como ksh o C Shell. Este tutorial está enfocado a Bash.

Vamos a empezar con ejemplos sencillos y si os sentís cómodos tengo ejercicios para rato:

Ejercicio 1

Y ahora veamos cómo funciona:

  • El comando clear (primera línea), limpia la pantalla.
  • El comando “echo” muestra lo que escribamos a continuación entre comillas dobles. Las líneas dos a la ocho dan lugar a un menú, que sirve para escoger el escritorio que queramos lanzar. Para ello, el usuario tiene que escribir un número, entre 1 y 4.
  • A continuación, vemos el comando “read”. Este, lee la respuesta del usuario, y la guarda como la variable: entrada1.
  • La estructura “case”. Empieza por case $variablein. Luego, en la siguiente linea:

1) Es para referirse al valor: 1, que en este caso es “Reiniciar red”. El resto son las entradas para los demás menús. Cada una de ellas termina obligatoriamente con los caracteres: ;;

  • Finalmente, para cerrar la estructura se escribe: esac, que no es otra cosa sino case, escrito al revés.

Ejercicio 2

Es una calculadora. Es muy simple, solo sabe sumar, restar, multiplicar y dividir. Pero también es muy fácil de escribir y de utilizar. Ilustra bien el uso de variables.

Las tres primeras líneas son, por así decirlo, de presentación. En la cuarta línea hay un read, llamado valor1, es una variable, que va a introducir desde el teclado el usuario. Después, es necesario saber qué operación se quiere realizar (suma, resta, multiplicación o división). Para ello hay un nuevo read, llamado “operador” para que el usuario pueda escoger. Después, tenemos el segundo valor de la operación llamado “valor2”.

El comando “sleep” lo único que hace es esperar un poco de tiempo para que dé la sensación de que el programa está pensando un poco antes de dar el resultado. La operación matemática propiamente dicha se realiza en la línea 12.

El comando es: expr. Como puede verse, opera directamente con los valores que hayan tomado las tres variables implicadas. Como veremos más tarde, hay otras formas de programar una calculadora. El mayor problema que presenta esta, es la operación multiplicación. El símbolo: * no es válido, porque está reservado para el sistema operativo.

Ejercicio 3

Shell Script

Al principio hemos visto una calculadora, capaz de sumar, restar y dividir correctamente, pero que fallaba con la multiplicación. Veamos ahora el código de una calculadora capaz de operar correctamente también con la multiplicación.

La estructura ha cambiado un poco. La idea es la misma, pero está mejor construida. La última línea muestra en pantalla la variable: resultado. Esta, está asignada en el propio programa y se corresponde con: expr $valor1 “$operador” $valor2.

El problema de la multiplicación se resuelve fácilmente incluyendo la variable operador entre comillas dobles. La estructura de este script es interesante, ya que se puede aplicar a otro tipo de operaciones simplemente cambiando el valor de la variable resultado.

Ejercicio 4

Se llama: trivial.sh, y es el típico juego de preguntas y respuestas. Solo tiene dos preguntas, pero es suficiente para ver cómo funciona. Está construido, sobre la estructura if fi. El programa conoce la respuesta correcta y evalúa la respuesta del usuario. Si acierta una pregunta se lo dice y pasa con la siguiente pregunta. Si acierta todas las preguntas le da el título de “magister del universo”.

Como puede apreciarse, la estructura if fi, y la estructura case hacen cosas bastante similares.

Llevan a cabo una acción en función de un valor del usuario. En general, case se considera una evolución de if fi, ya que permite el mismo resultado, escribiendo menos código. Sin embargo, el uso de if fi es perfectamente correcto. La evaluación de las condiciones se realiza mediante el comando test. Este, comprueba si la variable es igual al valor que le hayamos indicado. Por supuesto, test puede hacer muchas más cosas, como comparar si un número es mayor o menor que otro, etc. Al final del script, se evalúan dos variables a la vez. Es necesario escribirlas en dos líneas diferentes.

Ejercicio 5

A continuación, vamos a hacer algo diferente. Se trata de una especie de minibase de datos para nuestra colección particular de películas. Se llama videobase.sh. Lo primero que tenemos que hacer es un script que genere un fichero de texto que contenga nombres de directores, nombres de películas, año de producción y productora. Cada línea son los datos de una película.

Viene a ser lo que se llama un registro. Nuestro segundo script, es un cliente de este fichero de texto, con capacidad para realizar búsquedas según varios criterios. Veamos el código:

La estructura es case. Introduce un par de elementos nuevos. El primero de ellos, es que desde este script se llama a un script de nombre: videobase.sh, es decir se llama a sí mismo. Esto es, para que cuando el usuario pulse la tecla “intro” se vuelva a repetir el programa. Produce la sensación de volver atrás.

Por último, la opción salir se logra escribiendo: 5), sin añadir ningún tipo de orden. El sistema interpreta que el script ha terminado y nos devuelve a la línea de comandos.

Las búsquedas se llevan a cabo sobre un fichero de texto simple llamado: base_datos.txt, el comando para filtrar la información es: grep. A los parámetros por los que busca el grep se les pone ” ” para que lo interprete como una única cadena.

Veamos ahora el fichero de texto que contiene los datos, es decir, base_datos.txt:

Kill Bill: Volumen 1 2003 Quentin Tarantino Miramax Films

El Señor de los Anillos: la Comunidad del Anillo 2001 Peter Jackson Wingnut Films

Ocean’s Eleven 2001 Steven Soderbergh Warner Bros

Simone 2002 Al Pacino New Line Produccions

Star Wars: El ascenso de Skywalker 2019 J.J. Abrams Lucasfilm

Como se ha comentado antes, este fichero se crea y edita mediante otro script. Se llama “pelis.sh”.

Veamos su contenido:

La parte interesante es la última línea. Un echo envía por la salida las cuatro variables en uso.

Mediante: >> la salida no va a la pantalla (salida estándar) sino a un fichero llamado: base_datos.txt.

En caso de no existir, lo crea. Si existe añade los datos nuevos. Si utilizamos: > sustituiríamos la información antigua por la nueva.

De la misma manera, podríamos escribir scripts para organizar una biblioteca, recibos bancarios o cualquier otra cosa. También se podría ampliar este programa con más opciones. Por ejemplo, una entrada para un código alfanumérico la dotaría de verdadera funcionalidad.

Mediante este código podemos identificar los objetos que queramos clasificar y localizarlos físicamente.

 

Para aprender más acerca de Shell Scripts visita el siguiente artículo, Relación 2 Shell Scripts Resueltos.

 

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies ACEPTAR

Aviso de cookies