Programación en BASH - COMO de introducción
Mike G (mikkey) disponible en dynamo.com.ar
Traducido por Gabriel Rodríguez Alberich
[email protected]
jueves, 27 de julio de 2000, a las 09:36:18 ART
Este artículo pretende ayudarle a comenzar a programar shell scripts a un nivel básico/intermedio. No
pretende ser un documento avanzado (vea el título). NO soy un experto ni un gurú de la programación en
shell. Decidí escribir esto porque aprenderé mucho con ello y puede serle útil a otras personas. Cualquier
aportación será apreciada, especialmente en forma de parche :)
.
.
.
.
.
.
.
.
. .
Contents
1
Introducción
1.1 Obteniendo la última versión .
1.2 Requisitos
.
.
.
.
.
.
.
1.3 Usos de este documento
.
.
.
.
.
.
.
.
.
. . .
.
.
.
. .
. . .
.
.
.
.
.
.
.
.
.
.
2 Scripts muy sencillos
2.1 Típico script ‘hola mundo’
.
.
.
.
.
.
.
.
.
.
2.2 Un script de copia de seguridad muy simple .
3 Todo sobre redirección
3.1 Teoría y referencia rápida
.
.
3.2 Ejemplo: stdout a un fichero .
3.3 Ejemplo: stderr a un fichero .
3.4 Ejemplo: stdout a stderr
3.5 Ejemplo: stderr a stdout
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
.
.
.
.
.
.
3.6 Ejemplo: stderr y stdout a un fichero .
.
.
.
.
.
.
4 Tuberías
4.1 Qué son y por qué querrá utilizarlas
.
.
4.2 Ejemplo: una tubería sencilla con sed .
4.3 Ejemplo: una alternativa a ls -l *.txt
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
. .
.
.
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
.
5 Variables
5.1 Ejemplo: ¡Hola Mundo! utilizando variables
.
.
.
.
.
.
.
.
.
.
.
.
5.2 Ejemplo: Un script de copia de seguridad muy simple (algo mejor)
5.3 Variables locales
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
. .
. .
.
. .
. .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
. .
. .
.
.
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
3
3
3
3
3
4
4
4
4
4
5
5
5
5
5
6
6
6
6
6
6
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
CONTENTS
6 Estructuras Condicionales
6.1 Pura teoría
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
6.2 Ejemplo: Ejemplo básico de condicional if .. then .
.
.
.
.
.
.
.
.
6.3 Ejemplo: Ejemplo básico de condicional if .. then ... else .
6.4 Ejemplo: Condicionales con variables .
.
.
.
6.5 Ejemplo: comprobando si existe un fichero .
7 Los bucles for, while y until
7.1 Por ejemplo .
7.2
for tipo-C .
.
.
.
.
.
.
.
7.3 Ejemplo de while .
7.4 Ejemplo de until
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
8 Funciones
8.1 Ejemplo de funciones
.
.
.
.
.
. . .
8.2 Ejemplo de funciones con parámetros
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
Interfaces de usuario
9.1 Utilizando select para hacer menús sencillos
9.2 Utilizando la línea de comandos
. . .
.
.
.
.
10 Miscelánea
10.1 Leyendo información del usuario
. .
10.2 Evaluación aritmética
10.3 Encontrando el bash
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10.4 Obteniendo el valor devuelto por un programa
10.5 Capurando la salida de un comando .
.
.
.
.
.
11 Tablas
11.1 Operadores de comparación de cadenas
11.2 Ejemplo de comparación de cadenas .
11.3 Operadores aritméticos .
.
.
.
.
. . .
11.4 Operadores relacionales aritméticos
11.5 Comandos útiles
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12 Más scripts
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12.1 Aplicando un comando a todos los ficheros de un directorio.
.
.
.
.
12.2 Ejemplo: Un script de copia de seguridad muy simple (algo mejor)
12.3 Re-nombrador de ficheros
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
. .
.
.
. .
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
. .
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
. .
.
.
. .
.
.
.
.
.
.
.
.
. .
. .
.
. .
. . .
2
7
7
8
8
8
8
9
9
9
9
10
10
10
10
11
11
11
12
12
12
12
13
13
13
13
14
14
14
15
18
18
18
18
1. Introducción
3
12.4 Re-nombrador de ficheros (sencillo)
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
20
13 Cuando algo va mal (depuración)
13.1 Maneras de llamar a BASH .
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
14 Sobre el documento
14.1 (sin) Garantía .
14.2 Traducciones
.
14.3 Agradecimientos
14.4 Historia .
.
.
14.5 Más recursos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
Introducción
1.1 Obteniendo la última versión
.
.
.
.
.
.
. .
. .
. .
.
.
.
.
. .
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
. .
.
. .
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
20
20
20
20
21
21
21
21
http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html
1.2 Requisitos
Le será útil tener una cierta familiaridad con la línea de comandos de GNU/Linux y con los conceptos básicos de
la programación. Aunque esto no es una introducción a la programación, explica (o al menos lo intenta) muchos
conceptos básicos.
1.3 Usos de este documento
Este documento intenta ser útil en las siguientes situaciones
• Si tiene alguna idea de programación y quiere empezar a programar algunos shell scripts.
• Si tiene una idea vaga de programar en shell y quiere algún tipo de referencia.
• Si quiere ver algunos scripts y comentarios para empezar a escribir los suyos propios.
• Si está migrando desde DOS/Windows (o ya lo ha hecho) y quiere hacer procesos ”por lotes”.
• Si es un completo novato y lee todo COMO disponible.
2 Scripts muy sencillos
Este COMO tratará de darle algunos consejos sobre la programación de shell scripts, basándose profundamente en
ejemplos.
En esta sección encontrará varios scripts pequeños que esperanzadamente le ayudarán a entender algunas técnicas.
3. Todo sobre redirección
4
2.1 Típico script ‘hola mundo’
#!/bin/bash
echo Hola Mundo
Este script tiene sólo dos líneas. La primera le indica al sistema qué programa usar para ejecutar el fichero.
La segunda línea es la única acción realizada por este script, que imprime ’Hola Mundo’ en la terminal.
Si le sale algo como ./hello.sh: Comando desconocido., probablemente
Comentarios de: Programación en BASH - COMO de introducción (0)
No hay comentarios