Make your own free website on Tripod.com

Utilizar Variables para el Shell

Como en los lenguajes de programación corrientes, en la programación en shell existen las variables, que son nombres simbólicos para zonas de memoria que almacenan datos que nos interesan. Pero al contrario que los lenguajes de alto nivel normales, las variables de los guiones no tienen tipo, o quizás sería más apropiado decir que tienen un tipo único y permanente: a todos los efectos se tratan como ristras de caracteres.

Para poder hacer sumas y restas hay una orden especial, la orden expr. Esta orden tiene que recibir cada número u operando como un parámetro independiente, así que devolverá un error si se intenta hacer algo como expr 5+7.

Referenciar variables

Las variables de los guiones no se declaran, y siempre están inicializadas con una ristra vacía o nula. Nótese que esto no es lo mismo que contener un espacio. Una ristra vacía o nula es una ristra que no contiene ningún caracter.

Hay que tener cuidado al asignar valores a las variables, ya que no se debe dejar ningún espacio entre el signo de asignación (el `=') y la variable o el valor asignado.

Para referirse a las variables, hay que utilizar el signo dólar ($) antes del nombre de ésta, siempre que nos refiramos a ellas para consultar su valor (si asignamos un valor a la variable, o utilizamos la orden read, que escribe en ella, no hay que poner el signo de dólar). Si nos olvidamos del signo dólar, y hacemos algo parecido a:

y=holax=y

Encontraremos que el valor de x es el carácter y, y no los caracteres hola, para hacer la asignación correctamente, tendríamos que haber escrito:

y=holax=$y

Como en todas o al menos la mayoría de las cosas en UNIX, los nombres son case sensitive, es decir, que no es lo mismo y que Y.

Para asignar un valor a una variable, basta con poner el nombre de la variable seguido de un signo de igual y el valor:

$ variable=valor

El nombre de la variable precedido por el carácter $ es el valor de la variable. La mejor manera de examinar el valor es utilizando el comando echo:

$ color=rojo$ echo $colorrojo$ telefono=5552314$ echo $telefono5552314$

Cuando se necesita asignar a una variable una cadena que incluye espacios o carácteres que normalmente el shell interpretaría, es necesario encerrar el valor entre comillas sencillas:

$ hacer='tengo que pasar al super; ir a la tintorer\'\i{}a; hablarle a mi tia'$ echo $hacertengo que pasar al super; ir a la tintorer\'\i{}a; hablarle a mi tia$

 

¿Cómo funciona el analizador del intérprete?

Como la mayoría de los analizadores de los lenguajes interpretados, primero realiza algunas sustituciones, al leer la orden, y luego ejecuta la orden que le queda después de las sustituciones.

Las sustituciones hechas por el intérprete de órdenes de UNIX son sustituciones de comillas y sustituciones de variables (lo que vea con un signo dólar que no esté “escapado''). Según el intérprete en particular, hará algunas sustituciones más, como sustituciones del caracter ~ (que indica el directorio raíz del usuario), los caracteres {}, los caracteres [], etc.

Cuando el analizador se encuentra un singo de dólar, que no tenga antes una barra invertida (\), lo interpreta como una variable. Lo que hace, entonces, es avanzar hasta que tiene el nombre completo de la variable, y cuando lo tiene, sustituye el dólar y el nombre por el valor de la variable. Si no existe ninguna variable que tenga ese nombre, no es un error. Simplemente lo sustituye por nada. Este comportamiento puede acarrear algunos fallos difíciles de descubrir. Por ejemplo, al procesar la línea

Mensaje = "$foo y alguna otra cosa"

El analizador dectecta el signo $, que indica variable, avanza hasta que tiene completo el nombre de la variable (el nombre es, por supuesto foo), y sustituye la ristra $foo por el contenido de la variable en cuestión. Es importante tener esto en cuenta, porque si quisiésemos poner bar después del contenido de la variable $foo, no podríamos escribir $foobar, porque el analizador creería que se esta consultando la variable foobar. Lo que tenemos que hacer es “delimitar” el nombre de la variable con llaves, quedando ${foo}bar.

 

 Dos órdenes útiles: Echo Y Read

Dos órdenes bastante útiles para probar algunas ejemplos con variables son echo y read. La primera se utiliza para mostrar texto por pantalla, y la segunda, como su nombre indica, es para leer del teclado y poner el resultado en una o varias variables. El funcionamiento de read es el siguiente: lee del teclado una ristra, y va asignando las palabras en orden a cada una de las variables que se le pasen como parámetros, asignando el resto de la ristra a la última variable. Es decir, que si se le pasan tres variables como parámetro, se asigna la primera palabra a la primera variable, la segunda a la segunda variable, y el resto de la ristra leída a la tercera variable.

Por ejemplo:

$ read foo bar

Escribo demasiadas palabras

$ echo $foo

Escribo

$ echo $bar

demasiadas palabras

 

Pagina Principal | | ©2005 Universidad Tecnologica de Panama |