PROGRAMACION SHELL AVANZADA
danzo6651 de Agosto de 2011
8.025 Palabras (33 Páginas)810 Visitas
CURSO 03-55
PROGRAMACIÓN AVANZADA EN
SHELL
Ramón M. Gómez Labrador
(ramon.gomez@eii.us.es)
Octubre de 2.003
2
03-55 Programación Avanzada en Shell
ÍNDICE
1. Introducción. ....................................................................................................................4
1.1. Características principales de BASH............................................................................4
1.2. Cuándo utilizar el intérprete de mandatos.....................................................................5
2. Modos de operación..........................................................................................................6
2.1. La línea de mandatos. ..................................................................................................6
2.2. Edición y ejecución de un guión. .................................................................................6
2.3. Recomendaciones de programación. ............................................................................7
3. Redirecciones. ...................................................................................................................9
3.1. Redirección de entrada.................................................................................................9
3.2. Redirecciones de salida................................................................................................9
3.3. Combinación de redirecciones. ..................................................................................10
3.4. Redirección de entrada/salida.....................................................................................11
3.5. Documento interno. ...................................................................................................11
3.6. Tuberías.....................................................................................................................12
4. Variables. ........................................................................................................................14
4.1. Tipos de variables. .....................................................................................................14
4.1.1. Variables locales. ................................................................................................14
4.1.2. Variables de entorno. ..........................................................................................15
4.1.3. Parámetros de posición. ......................................................................................16
4.1.4. Variables especiales. ...........................................................................................17
4.2. Matrices.....................................................................................................................18
4.3. Configuración del entorno. ........................................................................................18
5. Expresiones. ....................................................................................................................20
5.1. Expresiones aritméticas. ............................................................................................20
5.2. Expresiones condicionales. ........................................................................................22
5.2.1. Expresiones de ficheros.......................................................................................23
5.3.2. Expresiones comparativas numéricas. .................................................................24
5.3.3. Expresiones comparativas de cadenas. ................................................................25
6. Entrecomillado y expansión. ..........................................................................................26
6.1. Entrecomillado. .........................................................................................................26
6.2..Expansión..................................................................................................................26
6.2.1. Expansión de llaves.............................................................................................27
2.6.2. Expansión de tilde...............................................................................................27
6.2.3. Expansión de parámetro o de variable. ................................................................28
6.2.4. Sustitución de mandato. ......................................................................................29
6.2.5. Expansión aritmética...........................................................................................30
6.2.6. Sustitución de proceso.........................................................................................30
6.2.7. División en palabras............................................................................................31
6.2.8. Expansión de fichero...........................................................................................31
7. Programación estructurada. ..........................................................................................33
7.1. Listas de mandatos.....................................................................................................33
7.1.1. Listas condicionales. ...........................................................................................33
7.2. Estructuras condicionales y selectivas. .......................................................................34
3
7.2.1. Estructuras condicionales. ...................................................................................34
7.2.2. Estructura selectiva. ............................................................................................36
7.3. Bucles........................................................................................................................37
7.3.1. Bucles genéricos. ................................................................................................37
7.3.2. Bucles condicionales “mientras” y “hasta”. .........................................................38
7.3.3. Bucle de selección interactiva. ............................................................................39
8. Funciones. .......................................................................................................................40
9. Características especiales ...............................................................................................42
9.1. Programas interactivos...............................................................................................42
9.2. Control de trabajos.....................................................................................................43
9.3. Intérprete de uso restringido.......................................................................................44
10. Referencias....................................................................................................................46
4
1. Introducción.
El intérprete de mandatos o "shell" es la interfaz principal entre el usuario y el sistema,
permitiéndole a aquél interactuar con los recursos de éste. El usuario introduce sus órdenes, el
intérprete las procesa y genera la salida correspondiente.
Por lo tanto, un intérprete de mandatos de Unix es tanto una interfaz de ejecución de órdenes
y utilidades, como un lenguaje de programación, que admite crear nuevas órdenes –
denominadas guiones o “shellscripts”–, utilizando combinaciones de mandatos y estructuras
lógicas de control, que cuentan con características similares a las del sistema y que permiten
que los usuarios y grupos de la máquina cuenten con un entorno personalizado [2].
En Unix existen 2 familias principales de intérpretes de mandatos: los basados en el intérprete
de Bourne (BSH, KSH o BASH) y los basados en el intérprete C (CSH o TCSH).
Este curso de formación pretende ser un guía para el usuario de Linux, que le permitirá
comprender, ejecutar y empezar a programar en la Shell, haciendo referencia especialmente a
BASH (Bourne Again Shell) –evolución de BSH, con características de KSH y CSH–, ya que
es el intérprete de mandatos más utilizado en Linux e incluye un completo lenguaje para
programación estructurada y gran variedad de funciones internas.
1.1. Características principales de BASH.
Los principales características del intérprete BASH son:
· Ejecución síncrona de órdenes (una tras otra) o asíncrona (en paralelo).
· Distintos tipos de redirecciones de entradas y salidas para el control y filtrado de la
información.
· Control del entorno de los procesos.
· Ejecución de mandatos interactiva y desatendida, aceptando entradas desde teclado o
desde ficheros..
· Proporciona una serie de órdenes internas para la manipulación directa del intérprete y
su entrono de operación.
· Un lenguaje de programación de alto nivel, que incluye distinto tipos de variables,
operadores, matrices, estructuras de control de flujo, entrecomillado, sustitución de
valores y funciones.
· Control
...