educatica!

educación, informática y demás

Clases de informática, GNU/Linux bash, Informática, Shell scripts, Sistemas operativos

Bash shell scripts intermedios

Ya hemos realizado algunos shell scripts utilizando las herramientas básicas de programación como la secuencia y algunas sentencias condicionales con if para el control de errores en tiempo de ejecución y realizar acciones en base a ciertas condiciones.

En esta serie de scripts, utilizaremos herramientas un poco más avanzadas de las disponibles en bash para crear scripts como son las sentencia case, las funciones y los bucles. También practicaremos con la obtención de la salida de comandos.

Obteniendo datos de comandos

En bash podemos obtener la salida de un comando como si del contenido de una variable se tratara. Para ello, tan solo tenemos que escribir el comando cuya salida queramos obtener entre paréntesis precedido por un $.

$(CMD)

Cuando bash, el interprete de comandos, se encuentre esa cadena de texto ejecutará el comando que hay entre los paréntesis y sustituirá toda la cadena $(CMD) por la salida del comando.

Esto nos da la oportunidad de utilizar dentro de nuestro script y nuestros comandos datos proporcionados por un comando para cualquier fin que nos podamos imaginar.

Algunos ejemplos:

  • $(whoami) – Sustituirá esta cadena por el nombre del usuario.
  • $(pwd) – Sustituye la cadena por la ruta del directorio actual
  • $(ls -l | grep saludo.txt) – Sustituye la cadena por información del fichero saludo.txt, si es que existe.

Podemos utilizar estos valores donde queramos dentro de un comando.

Es como si contáramos con variables cuyo valor se calcula al ejecutar el comando que llevan dentro. Esto nos permite hacer cosas tan interesantes como estas:

Además, si vamos a utilizar estos datos varias veces en nuestros scripts, podemos asignar esta información a una variable. De esta forma podemos utilizar ese valor en nuestro script una y otra vez de forma sencilla.

Por supuesto, CMD puede estar compuesto por un conjunto de comandos unidos por tuberías para obtener una información más elaborada.

userData.sh

Vamos a crear un script llamado userData.sh que recibirá por parámetro el nombre de una cuenta de usuario. Si el usuario no existe, mostraremos un mensaje de error y terminaremos la ejecución del script con un valor de retorno de error.

Si existe, obtendremos del fichero de cuentas de usuario del sistema la información de dicho usuario y la mostraremos en pantalla con una etiqueta identificativa.

La información a mostrar será la siguiente:

  • Nombre de usuario
  • UID
  • GID
  • HOME
  • SHELL

Además, mostraremos no solo el GID, sino el nombre del grupo al que pertenece el usuario.

Ayuda

Lo primero que tenemos que saber es dónde está esta información. Si no lo tienes claro, revisa la información sobre gestión de usuarios y grupos en GNU/Linux.

Leer la línea del usuario.

Cortar los campos interesantes con cut, con los parámetros -d y -f.

Podemos guardar esta información en variables para usarla en el script

Y usar esta información para hacer más consultas

Solución

Deja un comentario

Tema creado por Anders Norén