06 - Variables

Índice

1. Asignación de valores
1.1. Valor numérico
1.2. Resultado de una expresión como valor
1.3. Resultado de una evaluación ó expresión entre acentos como valor
2. Pedir un valor por consola
3. Hacer referencia a una variable
4. Variables posicionales
5. Variables de entorno
6. Ejemplos


1. Asignación de valores

1.1. Valor numérico

En scripting bash no es necesario inicializar las valores (decir de que tipo es y el valor inicial) ya que es un lenguaje débilmente tipado. Para asignarle un valor a una variable es suficiente con escoger un nombre (el nombre debe iniciarse con una letra o guión bajo (_)) e igualarlo con el valor deseado:

x=5

1.2. Resultado de una expresión como valor

Esto no sirve cuando queremos darle el valor de una expresión artimética. Hay recurrir al comando 'let'.

let x = expresión

Tiene las siguientes limitaciones:

  • sólo acepta las operaciones aritméticos: +, -, *, /, %;
  • sólo soporta números enteros

1.3. Resultado de una evaluación ó expresión entre acentos como valor

También se le puede pasar como valor el resultado de una evaluación de expresión o ésta misma entre acentos graves.

x=$((expresión))
ó
x=$[expresión]
ó
x=expr expresión
ó
x=`expresión`
ó
x=`expresión | bc -l`

2. Pedir un valor por consola

Para pedir que introduzcan el valor por la entrada estándar utilizarémos la orden 'read'.

read x

3. Hacer referencia a una variable

Para mostrar el valor de una variable sólo hay que anteponer a ésta el símbolo dolar ($).

4. Variables posicionales

Hemos reservado el uso de los números en el inicio del nombre de las variables para este tipo de variable.
Podemos acompañar la llamada al escript con los argumentos que queremos pasarle enumerándolos después del nombre del script.

$ ./script.sh arg1 arg2 arg3

Para poder utilizar estos valores utilizaremos el símbolo dolar ($) acompañado de la posición del valor (1, 2, 3, ...), a partir del nº 10 el número debe estar entre corchetes (${10}, ${11}, ...).
Existen unas variables posicionales especiales:

  • $0 : nombre del script;
  • $* ó $@: todos los argumentos (excepto el nombre del script);
  • $# : número de argumentos;
  • $? : estado de terminación de la última orden;
  • $$ : pid del proceso del script;

Con el comado set asignamos los valores igual que si los hubieramos introducido llamando al script.
Con el comando shift movemos tantas posiciones como queramos hacia la izquierda los parámetros. Por defecto una posición.

5. Variables de entorno

Son las variables que pertenecen al sistema. Éstas se utilizan igual que las demás anteponiendo el símbolo dolar ($) delante y además hay que escribirlas en mayúscula.
Algunas de ellas son:

  • $HOME : ruta de nuestro directorio personal;
  • $USER : nombre de usuario asignado;
  • $DISPLAY : Contiene la identificación de la terminal;
  • $LANG : Muestra el código del idioma predeterminado;
  • $PATH : rutas en las que el intérprete busca las órdenes a ejecutar cuando no especificamos donde están;
  • $SHELL : ruta al intérprete de órdenes que se ejecuta por defecto;
  • $HOSTNAME : nombre asignado al equipo.

6. Ejemplos

!#/bin/bash
x=5
echo $x
exit 0

!#bin\bash
x=$((4*6))
echo $x
exit 0

!#/bin/bash
echo -e "¿Cómo te llamas? \c"
read nombre
echo "Hola $nombre"
exit 0

!#/bin/bash
echo Comando: $0
echo Argumentos de la orden: $*
echo Número de argumentos: $#
echo Argumento 1: $1
echo Argumento 2: $2
echo Argumento 3: $3
echo Argumento 4: $4
echo Estado: $?
echo pid: $$
echo Orden: $0 $*
exit 0

#!/bin/bash
set 11 22 33 44
echo -e "arg1 $1 \narg2 $2 \narg3 $3 \narg4 $4"
exit 0

#!/bin/bash
set 11 22 33 44
echo -e "arg1 $1 \narg2 $2 \narg3 $3 \narg4 $4"
shift 2
echo -e "\narg1 $1 \narg2 $2 \narg3 $3 \narg4 $4"
exit 0

#!/bin/bash
echo "Hola $USER, tu carpeta personal es \"$HOME\",
tu equipo se llama \"$HOSTNAME\" y utilizas \"$LANG\" como idioma predeterminado"
exit 0