Está en la página 1de 5

Programacin Shell.

Variables y scripts
Un shell script o guin es un programa interactivo del Sistema Operativo, es un programa que se interpone entre el usuario y el ncleo del sistema operativo y que permite interpretar las ordenes de aqul y ser ejecutadas por el ncleo. Es bastante ms que un intrprete de rdenes. Es un lenguaje de programacin similar a los ficheros por lotes de MS DOS (batch) pero con ms potencia y capacidad. Linux es case sensitive, distingue entre maysculas y minsculas, es decir no es lo mismo cont que Cont. Variables de entorno El shell incorpora dos zonas de memoria (especficas para cada shell) llamadas rea de datos locales y entorno: rea de datos locales: ah estn las variables nuevas que se crean, que son accesibles por el propio shell e inaccesibles por cualquier otro shell. Entorno: Contiene las variables globales que permanecen activas y accesibles durante toda la sesin y para cualquier proceso. Las variables globales suelen crearse al iniciar la sesin (aunque no siempre) y se utilizan habitualmente para determinar las caractersticas de la sesin: el tipo de terminal, el directorio de presentacin, la ruta de bsqueda de rdenes, el prompt o indicativo del sistema, la ruta de correo, etc. Dentro de una sesin se pueden crear varios shell. Cada vez que abrimos un shell tiene su propia zona de memoria. Al entrar a una sesin tenemos variables globales o de entorno que sirven para cualquier shell dentro de una sesin (MAIL, PS1, PS2, etc). No obstante pueden incorporarse al entorno variables locales creadas durante la sesin. Esto se hace con la orden export. Esta orden exporta la variable local y la hace global para que la vean todas las rdenes y todos los shell. No es necesario declarar las variables dentro los shell scripts las, solamente se utilizan. Las variables no tienen tipo de datos simplemente sirven para almacenar datos. Despus de darle a cont un valor 1 puedo asignarle el valor Pepe. cont = 1 cont = Pepe Creacin de un script Un script es un programa formado por una serie de instrucciones reconocibles por el shell, guardadas en un fichero y ejecutadas secuencialmente por el shell cuando es invocado el fichero. Para crearlo: cat > programa con un editor de texto Para ejecutarlo: sh programa (Cuando no tenemos permiso de ejecucin)

chmod u + x programa (Para aadir el permiso de ejecucin al programa) y despus: ./programa (basta con escribir el nombre del programa para que se ejecute) Si utilizamos sh para ejecutar el programa podemos aadir al comando las siguientes opciones: - v Sirve para realizar una traza del programa, es decir, para depurar el programa (ver instruccin por instruccin cmo se va ejecutado). -x Hace lo mismo que v y adems muestra el contenido de las variables. Nota: Hay una variable que le indica al sistema operativo que directorios debe incluir en la bsqueda de ficheros y rdenes. Esta variable se llama PATH. Dentro de sta, para indicarle al sistema operativo que tambin busque en el directorio activo (en el directorio en el que nos encontramos) se hace aadiendo :. al final de la variable .profile Es un guin que se encuentra en nuestro directorio de inicio y que se ejecuta cada vez que iniciamos nuestra sesin. Aqu se exportan las variables globales y es dnde podemos cambiar parmetros de la sesin. # Es un carcter que sirve para poner comentarios en un script. Debe haber uno por lnea. Es muy importante poner comentarios. Los cambios que hagamos dentro de un guin no tienen efecto fuera de ste, las variables locales no existen al terminar el script. rdenes que dan informacin del sistema set Esta orden muestra la lista de variables locales definidas, es decir, muestra las variables del shell en el que nos encontramos. env Muestra las variables del entorno (las globales). Las ms conocidas son: PATH Ruta de los directorios a los que va a ir a buscar una orden. Estos directorios estn separados por dos puntos. Nota: La ruta de bsqueda de comandos en Unix no incluye, por defecto, el directorio actual en el que nos encontramos, por lo que al ejecutar una orden o un script nunca lo va a buscar en el directorio actual. Deberemos cambiar la ruta de la variable PATH que se encuentra definida en el fichero .profile o bien, podemos ejecutar un programa de la siguiente manera: ./prog MAIL Ruta dnde se encuentra nuestro correo. PS1 Almacena el prompt de nuestro usuario ($). PS2 Almacena el prompt secundario (>)de nuestro usuario. Para cambiarlo slo tenemos que asignarle otro valor. PS2 = + HOME Almacena la ruta donde se encuentra nuestro directorio personal, al que ir cuando ejecutemos la orden cd sin argumentos. LOGNAME Almacena el nombre del usuario conectado.

CD_PATH Almacena la ruta en los que va a buscar el sistema cuando use el comando cd. export Exporta variables (las convierte en globales). Tiene dos usos: Sin argumentos nos muestra las variables exportadas. Con argumentos (export cont) exporta esa variable para que sea global. = Sirve para asignar un valor a una variable nombre=Pepe (la crea y le da valor) NO PUEDE HABER ESPACIOS NI DELANTE NI DETRS DEL IGUAL echo visualiza el contenido de una variable echo $variable caracteres especiales para los scripts Comillas simples('): no interpreta nada de lo que hay entre ellas. echo Nombre: $nombre Visualiza: Nombre: $nombre Comillas dobles ("): interpreta el dlar ($), las comillas dobles (), las simples () y la barra invertida (\) echo Nombre: $nombre Visualiza: Nombre: Valor_de_la_variable La barra invertida (\) permite eliminar el significado de un carcter (permite escapar un carcter). echo Nombre: \$Nombre Visualiza: Nombre: $Nombre Secuencias de escape: son cdigos especiales para ser tratados por la orden echo. Son muy parecidos a los de C. \c Sirve para evitar un salto de lnea. \n Inserta un salto de lnea. \t Inserta una tabulacin (8 caracteres en blanco a la derecha). \nnn Es el cdigo ASCII (en octal) del carcter que queramos visualizar. Donde nnn es un nmero en octal. Variables posicionales Son variables que adoptan como valores los argumentos introducidos a continuacin del nombre del guin shell en la lnea de rdenes. Se llaman $1, $2, $3, $4, $5, $6, $7, $8, $9 Ejemplo: sh prog uno Pepe 10

$1 contendr el valor uno, $2 contendr el valor Pepe y $3 el valor 10 Si dentro del script tengo en una lnea de rdenes echo $2 visualizar: Pepe Nota: esta es la forma que tiene el usuario de pasarle al script valores. Adems de stas existen creadas automticamente por el shell las siguientes: $0 Es el nombre del script. echo $0 visualizar: prog $* Es una variable que guarda todos los argumentos posicionales. En nuestro ejemplo almacenar uno Pepe y 10 (los tres valores). $# Es el nmero de argumentos introducidos, es decir, el nmero de variables posicionales con valor. echo $# Visualiza: 3 $? Es el cdigo de error (o de retorno) generado por la ltima orden ejecutada. Nota: todas las rdenes del sistema operativo devuelven un cdigo de error y se guarda en esta variable $$ Almacena el PID del proceso actual. $! Es el PID del ltimo proceso en background invocado por el shell. $- Son las opciones que nos han pasado en la lnea de comandos. Sirve para ver las opciones usadas por el usuario. Prog r j Almacena r y j shift Sirve para desplazar un lugar los valores de las variables posicionales. El valor de $9 pasa a $8, el de ste a $7 y as hasta llegar a $1 cuyo valor se perdera. Nota: el argumento 10 que le pasemos se va a almacenar en $9. De esta forma, en un momento dado, slo podremos acceder a 9 valores pero haciendo shift podemos almacenar todos los que queramos. read Sirve para leer por teclado uno o varios valores desde un guin shell read edad expr sta es una orden para realizar clculos aritmticos ( + - * / % - Mdulo). suma=`expr $x + 10` prod=`expr $x /* 10` (el * debe escaparse) Nota: el igual no admite espacios. Los operadores deben ir separados por un espacio El orden de prioridad de los operadores es: % * / + - y se operan de izquierda a derecha. Para asignar una operacin aritmtica a una variable deberemos incluir toda la expresin entre acentos circunflejos: res=`expr 3 + $uno` Los parntesis no existen. En su lugar usaremos acentos circunflejos expr `expr $a + 8` / `expr $a + 8`

La orden expr slo admite aritmtica entera, no trabaja con decimales (3 / 2 dara como resultado 1). Consideraciones Unix Interpreta cualquier palabra que empiece por $ como una variable y la sustituye por su valor. Si una variable no va seguida por un separador, habitualmente un espacio, es preciso encerrarla entre llaves. bola=Mari echo $Bola Visualiza Mari Si quiero visualizar el contenido de una variable y a continuacin un texto (concatenado): b=Mari Echo ${b}ola Visualiza Mariola

También podría gustarte