- Obtener datos de entrada
- Control de errores
- If COMANDO != if [ COMANDO ];
- Bucles
- Comandos
- Parámetros a funciones 🙂
Obtener datos de entrada
Es muy habitual que los scripts requieran obtener información de entrada en el momento de ejecutarlos. Porque de esta forma podemos ajustar la funcionalidad, es decir lo que hace el script realmente, a nuestras necesidades en ese momento.
Por ejemplo,. un script que cree varias cuentas de usuario simplemente pasándole por parámetro distintos nombres de usuario, creará unas cuentas u otras.
Las formas más habituales de pasar datos de entrada a un script son:
- Parámetros.
- Por teclado
- Por ficheros
Datos discretos por parámetro
Dónde los parámetros posicionales tienen un sentido concreto y además se pasa un número de parámetros predeterminado previamente. «¿Cómo?» Pues que se pasan, por ejemplo, dos parámetro el primero es el nombre de un usuario y el segundo de un grupo.
En estos casos lo primero que hacemos es asignar cada parámetro a una variable.

En el parámetro uno nos pasan el nombre de un usuario y en segundo parámetro el nombre de un directorio.

En el primer parámetro nos pasan la ruta de un directorio y en el segundo parámetro nos pasan el nombre de un usuario.

Nos pasan una lista variable de valores por parámetro
Tenemos que usar un bucle for cuya variable tendrá como nombre el nombre de los datos que vamos a recorrer.
Si no recordamos como funciona for, usamos help

El script recibe una lista variable de nombres de usuario

Está bien poder comprobar que realmente estamos recorriendo los datos que nos pasan por parámetro, de ahí el comando echo en el cuerpo del bucle.

El script recibe por parámetro una lista de nombres de directorios.

Vamos a probarlo
Resulta que, queremos mostrar la ruta absoluta de cada uno de los directorios pasados por parámetro suponiendo que cada parámetro es el nombre de un directorio que se encuentra en /educatica/2025/cursos/sistemas.

Vamos a probarlo

Insertar datos por teclado: comando read
Ahora el script pedirá por teclado el nombre del directorio dentro de /educatica/2025/cursos/sistemas

Vamos a probarlo

Repetir la tupla pedir + acción con un bucle while
Habrá veces en las que no sepamos cuantos datos va a insertar el usuario. Necesitamos un mecanismo que repita el proceso mientras el usuario inserte datos por teclado.
Mientras el valor del dato no sea vacío, realizamos la acción y volvemos a pedir un dato.

Vamos a probar

¿Se pueden utilizar las dos opciones?
Si, es raro, pero se puede.

Cuando elegimos una técnica de obtener datos de entrada u otra
Cuando queramos proporcionar cierta reutilización de scripts o un uso no interactivo del mismo, lo ideal es utilizar la herramienta de parámetros para proporcionar información. Si queremos que el script sea interactivo, leeremos datos por teclado.
Control de errores
El control de errores sirve para filtrar las condiciones necesarias para que podamos ejecutar el script. Cuando estamos creando el script podemos comprobar las condiciones del sistema, estamos nosotros delante. Este momento en el tiempo se llama en programación tiempo de compilación o de edición.
Sin embargo, cuando un operador o usuario ejecute el script, no sabemos cómo estará el sistema, por ejemplo si existe un directorio o un fichero necesario, si se han pasado parámetros necesarios o no, etc. Este momento en el tiempo se conoce como tiempo de ejecución.
El control de errores nos permite comprobar si se cumplen las condiciones necesarias para que se ejecute el script. Si no se cumple alguna de estas condiciones necesarias, terminamos la ejecución del script mostrando un mensaje de error con información para que el usuario pueda cumplir con la condición y resolver el problema y retornando un código de salida de error, es decir un valor distintos de 0.
Algunas comprobaciones
Comprueba que se pasa el nombre de un usuario por parámetro.

Comprueba que se pasa el nombre de un usuario y que ese usuario exista en el sistema.

Algunas mejoras: elif
Si vamos a encadenar varias comprobaciones tenemos que usar if

Uso de función error

Creamos una función error que reciba el mensaje a mostrar y luego termine la ejecución del script con valor de retorno distinto de 0

Seguimos con ejemplos…
Además me piden que el script sea ejecutado por root.

Además, me piden que si no hay conexión con Internet tampoco podemos continuar con el script

Además, me piden que tiene que estar en ejecución el programa firefox :_(

Ahora lo ponemos como parte del script

Si no existe el directorio /etc/educatica/examenes, créalo.

Necesitamos que exista el grupo educatica para poder realizar la función del script, así que hemos decidido que si no existe el grupo, lo creamos.

Ahora insertamos la condición

Comando if : Condición = COMANDO
Cuando utilizamos un comando if tenemos que tener muy claro que la condición que se pone detrás del if es un comando. Si ese comando se ejecuta correctamente entonces se cumple la condición.
Al usar [ expresion ] estamos ejecutando un comando, el comando test al que se le pasa como parámetro la expresión que está entre corchetes.
Cosas que si, cosas que no
Mal

Solución

Bien, pero…

Solución:

Como está?

Eso está mal! no estamos ejecutando ningún comando. El problema es que encima estamos redireccionando por lo que puede que no veamos el fallo.

Comandos
Tenemos que saber administrar con comandos nuestro sistema operativo favorito 🙂 Vamos a ver cuales son las principales tareas de administración para tratar de recordar los comandos más interesantes.
- Usuarios y grupos.
- Crear, modificar y borrar cuentas de usuarios
- Crear, modificar y borrar cuentas de grupo y miembros de grupos.
- Establecer contraseña
- Ficheros del sistema
- Directorios y ficheros.
- Crear, copiar, modificar, mover y eliminar ficheros
- Crear, copiar, modificar, mover y eliminar directorios
- Mostrar información de ficheros y directorios, tanto extendida como simple.
- Sistemas de ficheros. dispositivos de almacenamiento, particiones y sistemas de ficheros.
- du
- Procesos.
- ps
- kill
- Conexión de red.
- ping
- Propietario, grupo y permisos (seguridad).
- chown
- chmod
- chgrp
- Servicios. Lanzar, parar, reiniciar y comprobar el estado de servicios.
- Monitorizar el sistema: recursos, aplicaciones, procesos, servicios, usuarios.
- Automatizar. Scripts.
- Hacer scripts 🙂
- secuencia
- condicionales
- bucles
- funciones
- Programación de tareas. Automatización de procesos.
Algún ejemplo extra
¿Qué hace este código?


Vamos a corregir

Veamos como se ejecuta

Podrías modificarlo para añadir un enlace simbólico en el directorio personal del usuario con el nombre examenes que lleve al directorio del usuario dentro de /etc/educatica/examenes
Por último, ¿podrías modificar el script para que la funcionalidad del script esté en una función que se ejecute tras el control de errores?
Dejar una respuesta