Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Variables locales

En los scripts que hemos escrito hasta ahora, todas las variables (incluidas las constantes) han sido variables globales. Las variables globales mantienen su existencia a lo largo del programa. Esto está bien para muchas cosas, pero a veces puede complicar el uso de funciones de shell. Dentro de las funciones de shell, a menudo es deseable tener variables locales. Las variables locales sólo son accesibles dentro de la función de shell en la que están definidas y dejan de existir una vez que termina la función de shell.

Tener variables locales permite al programador usar variables con nombres que pueden existir ya, ya sea en el script globalmente o en otras funciones de shell, sin tener que preocuparse por posibles conflictos de nombres.

imagen

Aquí hay un script de ejemplo que demuestra cómo se definen y usan las variables locales:


#! / Bin / bash


# local-vars: script para demostrar variables locales

#! / Bin / bash


# local-vars: script para demostrar variables locales


foo = 0

# variable global foo

foo = 0


función_1 () {

local foo # variable foo local a funct_1 foo = 1

echo "funct_1: foo = $ foo"

}


función_2 () {

local foo # variable foo local a funct_2 foo = 2

echo "funct_2: foo = $ foo"

}


echo "global: foo = $ foo" funct_1

función_1 () {

local foo # variable foo local a funct_1 foo = 1

echo "funct_1: foo = $ foo"

}


función_2 () {

local foo # variable foo local a funct_2 foo = 2

echo "funct_2: foo = $ foo"

}


echo "global: foo = $ foo" funct_1

Variables locales


echo "global: foo = $ foo" funct_2

echo "global: foo = $ foo"

echo "global: foo = $ foo" funct_2

echo "global: foo = $ foo"


Como podemos ver, las variables locales se definen precediendo el nombre de la variable con la palabra local. Esto crea una variable que es local a la función de shell en la que está definida. Una vez fuera de la función de shell, la variable ya no existe. Cuando ejecutamos este script, vemos los resultados:



[yo @ linuxbox ~] $ vars locales

global: foo = 0 funct_1: foo = 1 global: foo = 0 funct_2: foo = 2 global: foo = 0

[yo @ linuxbox ~] $ vars locales

global: foo = 0 funct_1: foo = 1 global: foo = 0 funct_2: foo = 2 global: foo = 0


Vemos que la asignación de valores a la variable local foo dentro de ambas funciones de shell no tiene ningún efecto sobre el valor de foo definido fuera de las funciones.

Esta característica permite escribir funciones de shell para que permanezcan independientes entre sí y del script en el que aparecen. Esto es muy valioso, ya que ayuda a evitar que una parte de un programa interfiera con otra. También permite escribir funciones de shell para que puedan ser portátiles. Es decir, se pueden cortar y pegar de un guión a otro, según sea necesario.


Top OS Cloud Computing en OnWorks: