variables en shell bash de Linux

Extracto

@pedroruizhidalg―Dentro del shell se definen variables. Éstas son conocidas como variables de shell ―no hicieron aquí un alarde de imaginación―, cada usuario puede elegir su propio shell y en cada shell las asignaciones y el tratamiento de variables puede diferir en cuanto a su sintaxis. Nosotros vamos a ver las variables para el shell bash.

Abreviaturas usadas

Descripción

Cuando empezamos a usar nuestro shell bash frecuentemente necesitamos automatizar algunas tareas o bien, simplemente, facilitarnos la vida en un trabajo que creamos que va a ser muy repetitivo. Existen varios tipos de variables shell, numéricas, alfanuméricas y array.

Definición de variables en shell  bash

Definir una variable en bash es tan simple como asignarle un valor con el signo igual y sin espacios desde el prompt de nuestro sistema.

$ variable=77
$ echo $variable
77
$

Ejecución

Como vemos en el ejemplo anterior para la llamada a la variable tenemos que precederla del signo dolar. En otras palabras, para definirla simplemente la nombramos, sin espacios escribimos el signo igual y sin espacios asignamos el valor.

Lo que asignemos a la variable no puede contener espacios que no estén delimitados por comillas simples, dobles o comillas invertidas.

Eliminación de variables
$ unset variable
$ echo $variable
bash: variable: variable sin asignar
$

Mediante la orden unset y el nombre de la variable, esta es eliminada del sistema. Asignar un valor vacío a la variable no la destruye, simplemente la iguala a valor vacio. Como podemos ver en el siguiente ejercicio tan solo unset destruye la variable.

$ciudad=Granada
$ echo $ciudad
Granada
$ ciudad=''
$ echo $ciudad

$ unset ciudad
$ echo $ciudad
bash: ciudad: variable sin asignar
$
Delimitación de cadenas: apóstrofos, comillas y barras invertidas

La cadena literal: entendemos como cadena literal cualquier contenido alfanumérico que no va a ser alterado nunca. Su evaluación será por tanto, una constante. En el siguiente ejemplo usamos Ciudad Real porque consta de dos palabras. Esto siempre será evaluado como ‘Ciudad Real’ mientras no alteremos su contenido.

$ ciudad='Ciudad Real'
$ echo $ciudad
Ciudad Real
$

La cadena evaluada: Para producir cadenas literales con una parte variable usamos las dobles comillas. Este tipo de cadenas al ser evaluadas contiene tanto la parte literal como la parte variable:

$ ciudad='Ciudad Real'
$ visitado="he visitado $ciudad"
$ echo $visitado
he visitado Ciudad Real
$ ciudad=Madrid
$ echo $visitado
he visitado Ciudad Real
$ visitado="he visitado $ciudad"
$ echo $visitado
he visitado Madrid
pedro@Makina:~$
  • En la primera orden asignamos a ciudad el valor de ‘Ciudad Real’.
  • En la segunda orden asignamos con comillas dobles el valor a visitado que contiene una parte literal y otra parte que corresponde al valor de la variable ciudad en el momento de la asignación.
  • En la tercera podemos comprobar cómo visitado muestra tanto su parte literal como su parte variable.
  • En la cuarta orden cambiamos el contenido de la variable ciudad.
  • En la quinta volvemos a mostrar visitado, pero no es alterado su contenido ya que no hemos hecho de nuevo la asignación.
  • En la sexta volvemos a efectuar la asignación a la variable visitado.
  • Comprobamos que la nueva evaluación de la cadena visitado ha surtido efecto con su nuevo valor.

Para alterar el valor de una cadena evaluada hemos de volver a realizar la asignación.

Una demostración de CÓMO NO FUNCIONA una cadena evaluada.

$ ciudad=Madrid
$ visitado='he visitado $ciudad'
$ echo $visitado
he visitado $ciudad
$

Vemos que el mismo procedimiento pero con los apóstrofes produce un resultado literal. La cadena no es evaluada.

Órdenes en variables

Con las comillas invertidas asignamos una orden a una variable. Mediante el comando pwd se averigua el directorio de trabajo en el que estamos actualmente trabajando. Asignemos esto a una variable en el siguiente ejercicio.

$ orden=`pwd`
$ echo $orden
/home/pedro/sandbox
$
Trabajar con arrays

Si sabes programar no te hace falta leer el siguiente párrafo.

Un array es formalmente un vector de memoria. Es decir, es una variable donde vamos a almacenar datos independientes. Estas variables siempre hay que expresarlas con un índice ―el índice del array― que determina su posición dentro del vector. En muchas ocasiones un programador necesita que una sola variable contenga distintos valores por ejemplo una lista de ciuades como en el ejemplo.

Los arrays se definen en bash con una asignación entre paréntesis y los elementos separados por espacio.

$ ciudad=(París 'Nueva York' 'Roma' Santiago)
$ echo ${ciudad[*]}
París Nueva York Roma Santiago
$ echo ${ciudad[0]}
París
$ echo ${ciudad[1]}
Nueva York
$ echo ${ciudad[2]}
Roma
$ echo ${ciudad[3]}
Santiago
$ echo ${ciudad[4]}

$
  1. Hemos asignado a la variable ciudad los elementos París, ‘Nueva York’ ―entre comillas pues son dos palabras―, Roma y Santiago.
  2. Vemos cómo listar todos los elementos del array ciudad. Observamos que para trabajar con arrays la sintaxis además del signo dolar tenemos que encerrar el nombre de la variable entre llaves {} y el número de elemento ―que siempre empieza por el elemento cero― entre corchetes [].
  3. Obtenemos el elemento 0.
  4. Vemos el contenido del elemento 1.
  5. Mostramos el elemento 2.
  6. Vemos el elemento 3.
  7. No existe nada en el elemento 4.

Lo vemos con otro ejemplo. Ahora vamos a introducir en una cadena evaluada un elemento del array.

$ ciudad=(París 'Nueva York' 'Roma' Santiago)
$ visitado="he visitado ${ciudad[$b]}"
$ b=1
$ echo $visitado
he visitado Nueva York
$ b=2
$ visitado="he visitado ${ciudad[$b]}"
$ echo $visitado
he visitado Roma
$

Podemos comprobar cómo con una sola variable almacenamos distintos valores.

Epílogo

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

Clave pública @pedroruizhidalg.pub.key

#aboutpedroruizhidalgo

♻ miotroblogsite ahorra papel
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: