terminal

Aprende shell script con ejemplos (I)

En este artículo quiero que aprendas shell script pero a base de ejemplos. Una vez que veas el ejemplo te propondré otro muy parecido. Si lo haces y funciona genial, eso quiere decir que no solamente entiendes el ejercicio sino que eres capaz de realizar ejercicios similares.

Ten en cuenta que con los shell script hay que tener paciencia. Los espacios en blanco mal colocados hasta pueden hacer que un script no funcione. Si eso pasa respira hondo, ten paciencia y persiste que seguro que encuentras la solución al problema.

1. Tu primer shell script

Primero abre un documento y escribe el siguiente texto:

#!/bin/bash
echo 'Hola holita'

Guárdalo y llamas al archivo script.sh

El siguiente paso es darle permiso de ejecución y ejecutar desde el terminal el script. Desde un terminal y en el directorio donde está el script ejecuta los siguientes comandos:

$ chmod +x script.sh
$ ./script.sh

si todo funciona correctamente te debería salir en pantalla lo siguiente:

$ chmod +x script.sh
$ ./script.sh
Hola holita

¿Y por qué sale eso? Vamos a comentar línea a línea el script anterior

#!/bin/bash
echo ‘Hola holita’

En la primera línea le decimos al sistema que el interprete de comandos que tiene que utilizar para ejecutar el script es el bash que se encuentra en la dirección /bin/bash. Esta línea es especial porque tiene los caracteres #!. Esos caracteres solamente aparecerán en esta primera linea de los script.

Ejercicio propuesto.
Copia y ejecuta el ejercicio anterior. Comprueba que tu script funciona correctamente y saca “Hola holita” por pantalla.

2. Añadiendo comentarios a tus shell script

Los comentarios por regla general se escriben anteponiendo una almohadilla # antes del comentario. Si tu comentario ocupa dos líneas tendrás que poner dos almohadillas.

Por ejemplo el siguiente script:

#!/bin/bash
echo 'Hola holita' #esta línea muestra algo por pantalla
#fin del script

Al ejecutarlo mostrará lo siguiente por pantalla:

$ ./script.sh
Hola holita
Ejercicio propuesto.
Añade comentarios a tu shell script y comprueba que sigue funcionando.

3. Variables en bash

Una variable es un contenedor donde poder guardar información. Las variables se almacenan en memoria y nos pueden servir en los shell script para guardar el nombre del usuario que lo ha ejecutado, la fecha actual, el nombre de un directorio, etc.

Veamos un ejemplo de variable en un shell script:

#!/bin/bash
FECHA=`date +%d-%m-%y`
echo $FECHA

En la variable FECHA almaceno el resultado de ejecutar el comando date +%d-%m-%y. Para esto utilizo el símbolo de acento “`” al principio y al final del comando para delimitarlo. Para crear este símbolo pulsa la tecla del acento y le das un espacio en blanco. De esa manera aparece ese símbolo.

¿Has notado?
Que cuando asigno un valor a la variable no le pongo el símbolo $ delante y cuando la utilizo sí.

Al ejecutar este script en mi terminal me aparece lo siguiente:

$ ./script.sh
21-03-14

Podemos utilizar los script para almacenar más información como por ejemplo:

USER=usuario

En este caso en la variable USER almacenaremos la palabra usuario.

Veamos un ejemplo más completo en el que se hace un backup del directorio home de un usuario concreto:

#!/bin/bash
FECHA=`date +%d-%m-%y` 
USER=usuario
echo 'Comenzando el backup...'
tar cvzf /tmp/$USER-$FECHA.tgz /home/usuario
echo 'Backup terminado'
 

Como puedes ver en las variables FECHA y USER vamos a guardar información que luego se utilizarán en el comando tar para realizar el backup.

Recuerda.
En shell script hay que tener cuidado con las mayúsculas y minúsculas. FECHA y fecha son para shell script variables diferentes. Acostúmbrate por ejemplo a escribir las variables en mayúscula y no tendrás problemas.
Ejercicio propuesto.
Modifica el ejemplo anterior para que haga el backup de un directorio de prueba que crees al efecto. Prueba a realizar un backup del directorio, borrarlo y restaurarlo para comprobar que tu script funciona correctamente.

4. Funciones en bash

En primer lugar tenemos que tener en cuenta qué es una función y para qué se utiliza. Imagina que tienes que hacer una tarea con comandos de forma repetitiva. Lo primero que piensas es en hacer un script para automatizar dichas tareas. Cierto, yo pensaría lo mismo.

Imagina ahora también que vas a hacer (además de esa) otro tipo de tareas repetitivas pero hay algunas partes de esas tareas que son iguales (se van a repetir). Tienes dos opciones, copiar y pegar esa parte del código con lo cual esa parte del código se va a reproducir en muchos script, o mejor, crear una función que pueda ser utilizada por todos los script.

Las funciones en bash nos permiten agrupar comandos y tienen la ventaja que las podemos comprobar y verificar que son eficientes. Si queremos modificar algo solamente tendremos que modificar la función. Es más, si falla algo el error lo tendremos también más localizado y será más fácil de corregir.

Veamos a continuación un ejemplo de hola holita con funciones:

#!/bin/bash 
HOLA=hola   #asigno hola a la variable HOLA
function hola {  #me creo la función hola, los corchetes delimitan la función
    local HOLA=holita #creo una variable local HOLA que solamente va a funcionar DENTRO de la función
    echo $HOLA #muestro el contenido de la variable local HOLA que contendrá "holita"
} 
echo $HOLA #mostrará el contenido de la variable HOLA de la segunda línea
hola  #llamo a la función que mostrará por pantalla holita
echo $HOLA #muestro de nuevo el contenido de la variable HOLA de la segunda línea
Ejercicio propuesto.
1. Copia y ejecuta el contenido del script anterior. Prueba que funciona.
2. Crea una segunda función con el nombre que quieras y modifica el script para que ejecute la segunda función también.

Si te ha gustado este post o lo has encontrado interesante no dejes de continuar aprendiendo shell script en la segunda entrega.

2 thoughts on “Aprende shell script con ejemplos (I)

  1. Pingback: Realización de Backup... | KisSocial

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>