Muy buenas. Ahí va el tercer post de la serie de Linux scripting. Si el primero fue básicamente un artículo de introducción, en el que expliqué que es el scripting, así como las ventajas y desventajas de los diferentes lenguajes que se utilizan (Bash o Python), en este segundo post me voy a introducir lo que sería el scripting con Bash.

Esto es una guía práctica más que teórica. No pretende ser un manual exhaustivo del lenguaje, ya que solamente cada apartado daría para varios artículos. El propósito es que adquieras las nociones básicas y aprendas a utilizar las principales estructuras del lenguaje. Al final del artículo te enlazaré alguna referencia por si quieres profundizar más en la sintaxis del lenguaje.

Anuncios

Tabla de Contenidos:

Comentarios

Los comentarios son una parte esencial en cualquier pieza de código. Son partes del código que no se ejecutan. Sirven explicar el código de modo que sea fácilmente entendible para el ojo humano que lo esté leyendo. Es una buena práctica utilizar comentarios, ya sea para que otras personas que lo lean sean capaces de entender tu código, o incluso para ti mismo. En Bash puedes crear un comentario escribiendo el texto que quieres comentar, detrás del símbolo#.

#Esto es un comentario en Bash.

<código>

#Este es otro comentario.

Al añadir # delante de una línea, lo que están haciendo es inhabilitarla para que no pueda ser ejecutada por el interprete. A parte de para “explicar” el código, esta práctica también la puedes utilizar para inhabilitar trozos de código que por el motivo que sea, no quieres que se ejecuten en este momento.

Impresión de Texto

La impresión de texto por pantalla es otro de los clásicos en cualquier lenguaje de programación. De hecho es por lo que se suele empezar a aprender la sintaxis de cualquier lenguaje de programación, con el famoso “hola mundo”.

Para imprimir una cadena de texto en Bash, utilizaremos la sentencia echo seguida del texto que quieres mostrar por pantalla entre comillas. La estructura general del uso de echo es la siguiente:

echo [opciones] [cadena de texto]

Partiendo de esta base teórica, si queremos ir a por el caso más simple, que sería la impresión de una cadena de texto simple, sin el uso de ninguna opción de por medio, la sentencia quedaría de la siguiente manera.

echo "Hola mundo"

Si quieres probar con otro ejemplo un poco menos simple, puedes utilizar el parámetro -e como opción entre la sentencia echo y la cadena de texto. Si esto lo combinas con el uso del carácter

dentro de la cadena, conseguirás añadir una nueva línea en la salida del texto. Aquí tienes un ejemplo:

echo -e "Esto es la primera línea.

Esto es la segunda línea"

Esto, como digo, se corresponde con dos casos bastante simples. A partir de ahí, esto se puede ir complicando tanto como quieras, sobretodo si empiezas a meterte con el uso de variables, o a combinar más opciones opciones. Pero esto ya lo verás más adelante.

Entrada de Texto

Al igual que ocurre con las salidas de texto, también es muy común que en la ejecución del programa, en algún punto el script requiera la introducción de texto por parte del usuario, por ejemplo, para asignar el valor de alguna variable.

En Bash, para indicar que debemos parar la ejecución para leer un determinado texto ue introduzca el usuario, lo más común es utilizar la sentencia read, seguido del nombre de la variable en la cual quieres que se almacene el texto leído. Primero te muestro el formato general y luego veremos algún ejemplo simple.

read [opciones] [variable]

Partiendo de esta base teórica, vamos a por un ejemplo simple, sin utilizar ninguna opción adicional, en la que únicamente pediremos un determinado dato al usuario, y lo almacenaremos en una variable.

echo "introduce tu edad" read A

Visto este ejemplo, a continuación verás una variante de este mismo ejemplo, pero utilizando la opción -p después de read. Esta opción te permitirá introducir el texto de salida informando al usuario, sin necesidad de utilizar echo.

read -p "introduce tu edad" A

Como ves, en este ejemplo estamos haciendo exactamente lo mismo, pero al combinar la sentencia con una determinada opción, podemos añadir funcionalidades adicionales.

Variables. Declaración y Llamada

Como cualquier otro lenguaje de programación, Bash también permite el uso de variables. Podemos distinguir entre dos tipos de variables, las variables globales y las variables locales (o shell variables).

La diferencia con otros lenguajes es que en Bash no se necesita declarar la variable previamente, ni tampoco indicar el tipo de valor que tendrá. Para crear un variable, tan solo hay que indicar su nombre, el operador igual, y el valor que le quieres asignar. Este puede ser un número, un carácter o un string (cadena de caracteres).

#Crear una nueva variable en Bash

frase = "Este es mi primer script en Bash"



#Crear otra variable

edad = 25

Para llamar una variable, tan solo debes introducir el nombre de la misma, con el símbolo $ al inicio. Ahora verás como llamar una variable dentro de echo, para que el programa escriba su valor como salida de texto.

#Imprimir el valor de una variable

echo $frase



#Imprimir el valor de una variable dentro de una frase

echo Tengo $edad años

Esto es uno de los casos más simples. Un poco más adelante verás como llamar una variable dentro de otro tipo de estructuras más complejas, como condicionales o bucles, para que se ejecute una determinada pieza de código en función del valor de la misma.

Condicionales. Sentencias if .. then .. else

Las estructuras condicionales, junto con las estructuras de iterativas que verás después, son las principales estructuras de control de flujo que tenemos en casi todos los lenguajes de programación. En según que tipo de scripts, es muy común que tengas que utilizarlas.

En el caso de las estructuras condicionales, la más utilizada es el if .. then .. else. El formato general consiste primero en introducir en una línea la sentencia if seguida de la condición (entre corchetes) y acabando con ;. A continuación se utiliza el then en una nueva línea, y debajo va el código que se ejecuta, si se cumple la condición indicada arriba. Se puede incorporar un else (de manera opcional) junto con el código a ejecutar en caso de que no se cumpla la condición. Para cerrar el ciclo, terminaremos con un fi.

if [condición];

then

<código>

else

<código>

fi

Esta es el formato general. Partiendo de esa regla, vamos a ver algún ejemplo simple para que te hagas mejor a la idea. En ese caso, haremos que el usuario adivine entre si en un lanzamiento de dados, aparece cara o cruz (siendo “cara” la opción correcta definida por el programa).

echo "En un lanzamiento de dados, indica cara o cruz"

read A



if [ $A = "cara" ];

then

echo "Acertaste"

fi

Como ves, este ha sido un ejemplo muy simple, pero la condición, así como el código que se ejecuta luego, pueden llegar a ser mucho más complejos.

Bucles. Sentencias for .. do, while .. do

De igual modo que ocurre con las estructuras condicionales, las construcciones de iteración son otro gran clásico. En este caso hay dos sentencias diferentes que podemos utilizar. Por un lado tenemos el for .. do, y por otro lado el while .. do.

La sintaxis en ambos casos es simple. Empezando por el for .. do, tenemos primero a la sentencia for seguida de la condición o rango de ejecución. En una línea aparte se indica la sentencia do, y justo debajo el código que se ejecutará mientras estemos dentro del rango. Al finalizar el código de ejecución, se indica la sentencia done en una nueva línea, para cerrar el bucle.

for <condición>

do

<código>

done

Este es formato general de la construcción for .. do.

Esto Continua

Como ya he comentado al principio, el objetivo de esta guía es permitirte adquirir las nociones básicas de la sintaxis de Bash, de cara a que puedas empezar a crear tus propios scripts. No pretende ser ningún manual extensivo del lenguaje, sino más bien una guía rápida y práctica. Si quieres entrar más en detalle en cada una de las sentencias y construcciones vistas aquí, te recomiendo echar un ojo al manual de Bash scripting básico para principiantes, de Wikilibros.

Antes de acabar, no me quiero ir sin antes recordarte que esta guía forma parte de una completa serie centrada al scripting en Linux. A continuación te dejo con el resto de posts de esta serie.

En la próxima guía ya entraremos más en la práctica, y verás como crear un primer script sencillo con Bash. Hasta la próxima!