Variables y parámetros de un script en bash

logo-bashCon este artículo voy a empezar una serie de programación en la consola bash (Bourne Again Shell).

Comenzamos creando un fichero que va a contener nuestro primer script. A este fichero lo vamos a llamar “variables”. Yo voy a usar el editor nano, que es uno de los que a mí personalmente más me gusta para la consola. Puede usar vi, vim, emacs, joe o el que más te guste:

(este símbolo $ del principio representa la línea de comandos, no es necesario que lo teclees).

Los scripts es conveniente que contengan esta primera línea:

Con esta línea le estamos diciendo al sistema operativo con qué consola tiene que ejecutar el script. En este caso es bash. Podría ser también un script en sh, csh, Python, Perl, o cualquier otro intérprete.

Ahora definimos nuestra primera variable:

En este ejemplo mensaje es el nombre que le vamos a dar a la variable.

Para los que no lo sepáis una variable es lo que usamos para almacenar información de manera temporal.

Un par de notas con respecto a los nombres de las variables:

  • Bash es sensible a las mayúsculas, así que MENSAJE no es la misma variable que mensaje.
  • Las mayúsculas se suelen usar para las variables de sistema, scripts de arranque y similares. Suele ser conveniente usar las variables de nuestros scripts en minúculas. Pero, al fin y al cabo, es cuestión de gustos.

Cuando la variable tiene un nombre compuesto, por ejemplo “ruta fichero” las dos formas más habituales para nombrarla son:

  • rutaFichero. A esta forma se la llama Camel Case.
  • ruta_fichero. A esta forma se la llama lower_under o Snake Case.

¿Cuál usar? Es cuestión de gustos, pero elige una forma y úsala siempre dentro de un script. No hay nada más confuso que andar mezclando las dos notaciones. Como estoy acostumbrado a Laravel y Prestashop yo tiendo a usar camelCase.

Para mostrar el contenido de la variable o usarla en algún otro lugar de nuestro script usaremos el nombre de la variable anteponiendo el símbolo $:

Permisos de ejecución

(qué mal me ha sonado siempre eso de permisos de ejecución).

Ha llegado el momento de ejecutar el script. Para eso vamos a la consola (puede abrir otra o salir del fichero que estás editando).

Para ejecutar un script usamos la siguiente forma:

Pero, ¡oh! nos muestra un error ¿por qué? Es porque no es un fichero ejecutable. Teclea lo siguiente:

Verás un resultado similar a éste:

Fíjate en la primera parte:

Estos son los permisos que tiene el archivo. No voy a entrar en mucho detalle pero para resumir dirá que los permisos se dividen en tres partes:

  • rw- : estos son los permisos que tiene el propietario del archivo.
  • r– : estos son los permisos del grupo.
  • r– : estos son los permisos del resto (los usuarios que no son propietarios ni del grupo).

Las letras singifican:

r – read

w – write

x – ejecución (como ves no hay ninguna x así que el archivo no se puede ejecutar)

Para solucionar el error podemos hacer:

Si ahora comprobamos los permisos de nuevo:

Perfecto, ahora sí:

y el resultado será:

Cuidado con los espacios

Cuando defines una variable ten mucho cuidado con los espacios. No puede haber espacios ni delante ni después del ‘=’ o tendremos un error. Por ejemplo no se puede hacer ésto:

ni ésto:

Porque ambas te van a dar un error similar a éste:

Usando las variables

Podemos usar las variables dentro de una cadena:

que nos mostrará:

Si usamos la variable por ella sola se ejecutará como si fuera un comando de bash:

Al ejecutar el script se sustituye $comando por ls -las.

Parámetros del script

Cuando ejecutamos un script podemos pasarle parámetros, por ejemplo:

Para poder acceder a esos parámetros podemos usar las variables $1, $2, $3, etc.

Y el resultado sería:

La variable $1 recoge el primer parámetro, $2 el segundo, etc. Si tenemos más de nueve parámetros podemos acceder a ellos usando ${10}, ${11}, etc.

También podemos usar comillas en los paŕámetros:

Si el script fuera éste:

El resultado sería:

También podemos usar el array $@, que recoge todos los parámetros, pero hablaremos de eso en otro artículo.

Variables de entorno

En nuestro script podemos usar todas las variables de entorno existentes, por ejemplo la variable $PATH.

También podemos definir en la consola nuestras propias variables de entorno:

después podremos usarla en nuestro script:

Vídeo

Por si eres de los que prefieren que les cuenten las cosas en lugar de leerlas te dejo aquí:

Leave a Comment