Home > Comandos Avanzados, Linux > Variables y arrays en Linux

Variables y arrays en Linux

October 14th, 2013

En Linux se pueden definir variables y arrays para facilitar la programación. La diferencia es que una variable almacena un dato mientras que un array almacena varios y se puede acceder a ellos individualmente.

Variables

Para asignar una variable usamos simplemente el nombre que queremos usar pero para mostrar su valor usamos el comando echo y la variable precedida del símbolo "$", para indicar que queremos que echo nos devuelva el valor de la variable y no el nombre que indicamos. Veamos unos ejemplos:

 $ a=1

 $ #Imprimimos la cadena literal a
 $ echo a
 a

 $ #Imprimimos la varible a
 $ echo $a
 1

 $ #Otros ejemplos
 $ variable1=cascanueces
 $ echo $variable1
 cascanueces
 $ kpj33='Entrecomillado para usar espacios'
 $ echo $kpj33
 Entrecomillado para usar espacios

 $#Asignamos a una varible otra variable
 $ a=xy
 $ b=$a
 $ echo $b
 xy

 $ #Con comillas simples no interpreta la variable
 $ #en el siguiente ejemplo $a
 $ c='La variable a tiene por valor $a'
 La variable a tiene por valor $a

 $ #En general en linux las comillas dobles
 $ #si interpretan las variables
 $ c="La variable a tiene por valor $a"
 La variable a tiene por valor xy

Arrays

Los arrays tienen una sintaxis diferente para asignarlos a las variables, precisamene para poder diferenciarlos. Posteriormente se pueden mostrar los elementos uno a uno.El índice del primer elemento es el 0 no el 1. Veámoslo con unos ejemplos.

 $ #v es una variable
 $ v="a b c"
 $ #a es un array
 $ a=(a b c)

 $ #Puedo imprimir la variable v
 $ echo $v
 a b c

 $ #La misma sintaxis me imprimirá solo el primer elemento de un array
 $ echo $a
 a

 $ #Que equivale a
 $ echo ${a[0]}
 a

 $ #Para imprimir cualquier elemento
 $ echo ${a[1]}
 b
 $ echo ${a[2]}
 c

 $ #Para imprimir todos
 $ echo ${a[*]}
 a b c

 $ #Curiosamente se admiten expresiones matemáticas, para imprimir el elemento 2=1+1
 $ echo ${a[1+1]}
 c

La sintaxis de array solo funciona para variables, o si se aplica a una variable la interpreta como un array de un elemento

 $ v="a b c"
 $ echo ${v[0]}
 a b c
 $ echo ${v[1]}

 $ #El elemento 1 ya no existe

Nos ha imprimido el resultado correcto en el primer caso, pero dado que no existe un segundo elemento en el segundo ejemplo no imprime nada. Por último, podemos obtener el número de elementos de un array “contándolos” con el símbolo "#":

 $ v=(a b c d)
 $ echo ${#v[*]}
 4

Asignando la salida de un comando

Podemos utilizar la salida de un comando a modo de variable generalmene en cualquier contexto y en particular para asignarlo a una variable ejecutándolo entre $(). Para ellos usaremos el comando seq. Veamos un ejemplo de creación de una variable:

 $ seq 1 5
 1 2 3 4 5
 $ v=$(seq 1 5)
 $ echo $v
 1 2 3 4 5

De forma similar para crear un array con la sintaxis de un array usando ():

 $ v=($(seq 1 5))
 $ echo ${#v[*]}
 5
 $ echo ${v[2]}
 3

Comandos Avanzados, Linux