CURSO 03-55
PROGRAMACIÓN AVANZADA EN
SHELL
Ramón M. Gómez Labrador
(
[email protected])
Octubre de 2.003
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
2
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
3
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 de trabajos en primer y segundo plano.
• Edición del histórico de mandatos ejecutados.
• Posibilidad de usar una "shell" para el uso de un entorno controlado.
4
1.2. Cuándo utilizar el intérprete de mandatos.
Como se ha indicado anteriormente, una “shell” de Unix puede utilizarse como interfaz para
ejecutar órdenes en la línea de comandos o como intérprete de un lenguaje de programación
para la administración del sistema.
El lenguaje de BASH incluye una sintaxis algo engorrosa, pero relativamente fácil de
aprender, con una serie de órdenes internas que funcionan de forma similar a la línea de
comandos. Un programa o guión puede dividirse e
Comentarios de: PROGRAMACIÓN AVANZADA EN SHELL (0)
No hay comentarios