You are on page 1of 4

Actividad 13: Scripts I. Ficheros de usuario ejecutados por el intrprete de comandos. Variables de entorno.

Introduccin -----------El intrprete de comandos no es slo un programa encargado de tomar las rdenes escritas por el usuario y llamar al comando o aplicacin correspondiente trasladndole los parmetros deseados. Tambin dispone de mecanismos para la automatizacin y administracin de tareas en el sistema donde la eficiencia es menos importante que la fcil configuracin, mantenimiento y portabilidad. Todo esto se traduce en la definicin de un lenguaje de programacin propio donde el intrprete ejecuta ordenadamente las acciones recogidas en un guin ("script") escrito por el usuario siguiendo la sintaxis presentada en los siguientes apartados. Qu es un Script? -----------------Un Script es un fichero de texto escrito por un usuario con rdenes para el intrprete de comandos. Cuando se llama al fichero todas las acciones se ejecutan automticamente siguiendo el patrn definido en l. En MS-DOS equivaldra a un fichero por lotes .BAT. En su interior, el fichero contendr obligatoriamente en la primera lnea esta secuencia: #! /bin/sh Donde - "#!" identifica al fichero como guin ejecutable por el intrprete de comandos. - "/bin/sh" especifica el intrprete del guin. (En un S.O. LINUX pueden convivir varios intrpretes). Un Ejemplo sera: #! /bin/sh echo hola mundo. # presenta por pantalla la cadena "hola mundo." ^ | +-- Marca el comienzo de un comentario (no lo tiene en cuenta el intrprete) hasta el final de la lnea. El nombre del fichero puede ser cualquiera (usar .sh) y tras su creacin es necesario convertirlo en ejecutable cambiando sus propiedades: #chmod +x fichero_script.sh La llamada al script necesita estar precedida de la cadena "./": #./fichero_script.sh El Sistema Operativo identifica un script usando el color verde al

listar los ficheros del directorio que lo almacena. Elementos de un Script ---------------------En un guin puede aparecer cualquier orden vlida para el indicativo del sistema: Comandos con sus parmetros llamada a una aplicacin Redirecciones de salida y/o entrada Concatenacin de rdenes Uso de caracteres de sustitucin (comodines), etc.

Adems incluye otras capacidades: - Manejo de variables - Ampliacin de comandos - Tratamiento de argumentos del script - Comandos de sustitucin - Expansin aritmtica - Estructuras de control - Estructura condicional (si ... no) - Estructura iterativa (repetir ...) - Seleccin de opciones (En caso de ...) - Funciones Aunque existe abundante bibliografa sobre el "arte" de la creacin de scripts aqu slo se mostrarn algunas pinceladas de las diversas opciones apuntadas. Manejo de variables ------------------Una variable es la referencia a una zona de la memoria cuyo contenido es manejado dentro del guin . Al iniciar la ejecucin de un Script tambin son accesibles todas las variables del intrprete de comandos (llamadas variables de entorno). Las variables de entorno se muestran en pantalla gracias al comando env , por ejemplo: # env USER=root OLDPWD=/ HOME=/ LOGNAME=root TERM=linux PATH=/usr/sbin:/bin:/usr/sbin/:/sbin SHELL=/bin/sh PWD=/home Donde la palabra en maysculas es el nombre de la variable y la cadena de caracteres a la derecha del signo "=" representa la informacin que almacena.

Cuando sea necesario operar con el contenido de cualquier variable dentro de un Script hay situar el smbolo dolar "$" delante de su nombre. Ejemplo, contenido del fichero "scrpt1.sh": #! /bin/sh echo Estoy en el directorio $HOME # mensaje de texto por pantalla. Al ejecutar el script (recordar, 1 pasar a ejecutable -# chmod +x scrpt1.sh- y 2 llamar con ./script.sh) el resultado en pantalla es: #./script1.sh estoy en el directorio /home # Tambin un guin puede definir sus propias variables: ... dentro de un guin ... nombre_variable=contenido <-- No dejar espacios en extremos de "=".

Si la cadena de caracteres almacenada en la variable tiene espacios en blanco es necesario expresarla entre los smbolos de doble comilla. Ejemplo, contenido y ejecucin del fichero "scrpt2.sh": #! /bin/sh variable1=cadena_sin_espacios variable2="cadena con espacios" #usar dobles comillas cuando hay echo $variable1 #espacios echo $variable2 sleep 3 #espera 3 segundos y contina #./scrpt2.sh cadena_sin_espacios cadena con espacios # _ Las variables creadas (y su valor) en un guin desaparecen al finalizar la ejecucin del mismo. Otro ejemplo. Contenido del fichero "scrpt3.sh": #! /bin/sh mensaje1=uno mensaje2="$mensaje1 dos" # Es posible anidar variables dentro de otras mensaje3="$mensaje2 tres"# :var_x="...$var_y..." echo $mensaje3 sleep 3 #espera 3 segundos y contina Al ser ejecutado aparece en pantalla: #./scrpt3.sh uno dos tres # _ Una ltima consideracin. Es posible escribir caracteres inmediatamente despus de una variable sin que el intrprete los asocie a ella. Esto es posible recurriendo al aislamiento del nombre de la variable con los smbolos de llave {nombre_variable}. Ver el contenido y ejecucin del

fichero scrpt4.sh: #! /bin/sh frecuencia=4.0 echo El PIC 16F84 trabaja a una velocidad de ${frecuencia}MHz #./scrpt4.sh El PIC 16F84 trabaja a una velocidad de 4.0MHz # _ T A R E A S ----------1 Crear y ejecutar todos los scripts de esta actividad. 2 Preparar un script llamado "mi_script.sh" que realice estas acciones - Liste por pginas el directorio "/bin". - Cree una copia de s mismo en el fichero copia_mi_script.bkp usando el elemento de redireccin ">". Y presente por pantalla los siguientes datos: - Nombre del intrprete de comandos (SHELL). - Directorio actual (PWD). - Usuario (USER). <->

You might also like