Introducción a la programación en Bash

96
Shell: aquel desconocido API de shell Manos a la obra! Introducci´ on a la programaci´ on en Bash Mauro Parra Miranda [email protected] November 19, 2005 Mauro Parra Miranda [email protected] Introducci´ on a la programaci´ on en Bash

description

En esta presentación es un curso básico de programación de bash. Bash es el Bourne Shell de Linux y cygwin.

Transcript of Introducción a la programación en Bash

Page 1: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Introduccion a la programacion en Bash

Mauro Parra [email protected]

November 19, 2005

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 2: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Que es un shell

I El shell es un interprete de comandos

I Pero tambien es un lenguaje

I El conjunto de comandos es un script

I Un script sirve como ’pegamento’ de diversos comandossencillos, que en conjunto son considerablemente poderosos.

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 3: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Que es un shell

I El shell es un interprete de comandos

I Pero tambien es un lenguaje

I El conjunto de comandos es un script

I Un script sirve como ’pegamento’ de diversos comandossencillos, que en conjunto son considerablemente poderosos.

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 4: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Que es un shell

I El shell es un interprete de comandos

I Pero tambien es un lenguaje

I El conjunto de comandos es un script

I Un script sirve como ’pegamento’ de diversos comandossencillos, que en conjunto son considerablemente poderosos.

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 5: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Que es un shell

I El shell es un interprete de comandos

I Pero tambien es un lenguaje

I El conjunto de comandos es un script

I Un script sirve como ’pegamento’ de diversos comandossencillos, que en conjunto son considerablemente poderosos.

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 6: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Por que aprender a programarlo?

I Te evita hacer tareas repetitivas

I Es bueno conocerlos, algun dia resolvera algun problema comocon los scripts en /etc/rc.d

I Es facil de aprender: piensa que quieres hacer - escribelo -revisalo (ahora ponlo todo en un archivo o script)

I Usualmente no tienes que debugear mucho, es como sivaciaras lo que harias en el prompt de comandos, pero escritoen un archivo.

I Es ideal para hacer algunos prototipos

I Es muy *nix: Keep It Simple Stupid! (divide y venceras)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 7: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Por que aprender a programarlo?

I Te evita hacer tareas repetitivas

I Es bueno conocerlos, algun dia resolvera algun problema comocon los scripts en /etc/rc.d

I Es facil de aprender: piensa que quieres hacer - escribelo -revisalo (ahora ponlo todo en un archivo o script)

I Usualmente no tienes que debugear mucho, es como sivaciaras lo que harias en el prompt de comandos, pero escritoen un archivo.

I Es ideal para hacer algunos prototipos

I Es muy *nix: Keep It Simple Stupid! (divide y venceras)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 8: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Por que aprender a programarlo?

I Te evita hacer tareas repetitivas

I Es bueno conocerlos, algun dia resolvera algun problema comocon los scripts en /etc/rc.d

I Es facil de aprender: piensa que quieres hacer - escribelo -revisalo (ahora ponlo todo en un archivo o script)

I Usualmente no tienes que debugear mucho, es como sivaciaras lo que harias en el prompt de comandos, pero escritoen un archivo.

I Es ideal para hacer algunos prototipos

I Es muy *nix: Keep It Simple Stupid! (divide y venceras)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 9: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Por que aprender a programarlo?

I Te evita hacer tareas repetitivas

I Es bueno conocerlos, algun dia resolvera algun problema comocon los scripts en /etc/rc.d

I Es facil de aprender: piensa que quieres hacer - escribelo -revisalo (ahora ponlo todo en un archivo o script)

I Usualmente no tienes que debugear mucho, es como sivaciaras lo que harias en el prompt de comandos, pero escritoen un archivo.

I Es ideal para hacer algunos prototipos

I Es muy *nix: Keep It Simple Stupid! (divide y venceras)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 10: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Por que aprender a programarlo?

I Te evita hacer tareas repetitivas

I Es bueno conocerlos, algun dia resolvera algun problema comocon los scripts en /etc/rc.d

I Es facil de aprender: piensa que quieres hacer - escribelo -revisalo (ahora ponlo todo en un archivo o script)

I Usualmente no tienes que debugear mucho, es como sivaciaras lo que harias en el prompt de comandos, pero escritoen un archivo.

I Es ideal para hacer algunos prototipos

I Es muy *nix: Keep It Simple Stupid! (divide y venceras)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 11: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Por que aprender a programarlo?

I Te evita hacer tareas repetitivas

I Es bueno conocerlos, algun dia resolvera algun problema comocon los scripts en /etc/rc.d

I Es facil de aprender: piensa que quieres hacer - escribelo -revisalo (ahora ponlo todo en un archivo o script)

I Usualmente no tienes que debugear mucho, es como sivaciaras lo que harias en el prompt de comandos, pero escritoen un archivo.

I Es ideal para hacer algunos prototipos

I Es muy *nix: Keep It Simple Stupid! (divide y venceras)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 12: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

No se use en caso de...

I Hacer matematicas intensas - Use Fortran (si aun existe)

I Requerir super portabilidad - Use Java, .NET o ’C’

I Aplicaciones complejas - Por ejemplo, que requieranestructuras mas elaboradas

I Aplicaciones de mision critica

I Requerir estructuras de datos ’elegantes’ - Listas ligadas,arboles

I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 13: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

No se use en caso de...

I Hacer matematicas intensas - Use Fortran (si aun existe)

I Requerir super portabilidad - Use Java, .NET o ’C’

I Aplicaciones complejas - Por ejemplo, que requieranestructuras mas elaboradas

I Aplicaciones de mision critica

I Requerir estructuras de datos ’elegantes’ - Listas ligadas,arboles

I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 14: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

No se use en caso de...

I Hacer matematicas intensas - Use Fortran (si aun existe)

I Requerir super portabilidad - Use Java, .NET o ’C’

I Aplicaciones complejas - Por ejemplo, que requieranestructuras mas elaboradas

I Aplicaciones de mision critica

I Requerir estructuras de datos ’elegantes’ - Listas ligadas,arboles

I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 15: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

No se use en caso de...

I Hacer matematicas intensas - Use Fortran (si aun existe)

I Requerir super portabilidad - Use Java, .NET o ’C’

I Aplicaciones complejas - Por ejemplo, que requieranestructuras mas elaboradas

I Aplicaciones de mision critica

I Requerir estructuras de datos ’elegantes’ - Listas ligadas,arboles

I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 16: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

No se use en caso de...

I Hacer matematicas intensas - Use Fortran (si aun existe)

I Requerir super portabilidad - Use Java, .NET o ’C’

I Aplicaciones complejas - Por ejemplo, que requieranestructuras mas elaboradas

I Aplicaciones de mision critica

I Requerir estructuras de datos ’elegantes’ - Listas ligadas,arboles

I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 17: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

No se use en caso de...

I Hacer matematicas intensas - Use Fortran (si aun existe)

I Requerir super portabilidad - Use Java, .NET o ’C’

I Aplicaciones complejas - Por ejemplo, que requieranestructuras mas elaboradas

I Aplicaciones de mision critica

I Requerir estructuras de datos ’elegantes’ - Listas ligadas,arboles

I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 18: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

API del shell

I Todo comando de *nix puede ser invocado

I Comandos de testing

I loops - ciclos

I Tus propios programas o scripts son parte del API!

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 19: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

API del shell

I Todo comando de *nix puede ser invocado

I Comandos de testing

I loops - ciclos

I Tus propios programas o scripts son parte del API!

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 20: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

API del shell

I Todo comando de *nix puede ser invocado

I Comandos de testing

I loops - ciclos

I Tus propios programas o scripts son parte del API!

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 21: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

API del shell

I Todo comando de *nix puede ser invocado

I Comandos de testing

I loops - ciclos

I Tus propios programas o scripts son parte del API!

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 22: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Como creo un script?

I Crea un archivo miscript.sh con tu editor de textos favorito

I Dale permisos de ejecucion: chmod +x miscript.sh

I Ejecutalo: ./miscript.sh

I Listo!

I En serio, eso es todo. :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 23: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Como creo un script?

I Crea un archivo miscript.sh con tu editor de textos favorito

I Dale permisos de ejecucion: chmod +x miscript.sh

I Ejecutalo: ./miscript.sh

I Listo!

I En serio, eso es todo. :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 24: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Como creo un script?

I Crea un archivo miscript.sh con tu editor de textos favorito

I Dale permisos de ejecucion: chmod +x miscript.sh

I Ejecutalo: ./miscript.sh

I Listo!

I En serio, eso es todo. :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 25: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Como creo un script?

I Crea un archivo miscript.sh con tu editor de textos favorito

I Dale permisos de ejecucion: chmod +x miscript.sh

I Ejecutalo: ./miscript.sh

I Listo!

I En serio, eso es todo. :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 26: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Como creo un script?

I Crea un archivo miscript.sh con tu editor de textos favorito

I Dale permisos de ejecucion: chmod +x miscript.sh

I Ejecutalo: ./miscript.sh

I Listo!

I En serio, eso es todo. :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 27: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Hola mundo!

#!/bin/bashecho ’Hello world’

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 28: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Corriendo el script

I Guardarlo en el archivo script.sh

I chmod +x script.sh

I ./script.sh

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 29: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Corriendo el script

I Guardarlo en el archivo script.sh

I chmod +x script.sh

I ./script.sh

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 30: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Corriendo el script

I Guardarlo en el archivo script.sh

I chmod +x script.sh

I ./script.sh

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 31: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Respaldo

#!/bin/bashLimpiezaDATE=‘date +%d-%m-%y‘USER=foobarecho ’Comenzando el backup’tar cjvf /tmp/$USER-$DATE.tbz /home/foobarecho ’Backup terminado’

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 32: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Redireccionando

I Redireccionar stdout a un archivo

I Redireccionar stderr a un archivo

I Redireccionar stdout a stderr

I Redireccionar stderr a stdout

I Redireccionar stdout y stderr a un archivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 33: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Redireccionando

I Redireccionar stdout a un archivo

I Redireccionar stderr a un archivo

I Redireccionar stdout a stderr

I Redireccionar stderr a stdout

I Redireccionar stdout y stderr a un archivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 34: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Redireccionando

I Redireccionar stdout a un archivo

I Redireccionar stderr a un archivo

I Redireccionar stdout a stderr

I Redireccionar stderr a stdout

I Redireccionar stdout y stderr a un archivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 35: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Redireccionando

I Redireccionar stdout a un archivo

I Redireccionar stderr a un archivo

I Redireccionar stdout a stderr

I Redireccionar stderr a stdout

I Redireccionar stdout y stderr a un archivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 36: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Redireccionando

I Redireccionar stdout a un archivo

I Redireccionar stderr a un archivo

I Redireccionar stdout a stderr

I Redireccionar stderr a stdout

I Redireccionar stdout y stderr a un archivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 37: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

ls -l >ls-l.txt

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 38: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

grep da * 2> grep-errors.txt

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 39: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

grep da * 1>&2 grep-errors.txt

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 40: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

grep * 2>&1

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 41: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

rm -f $(find / -name core) &> /dev/null

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 42: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Tuberias o Pipes

I Una tuberia sirve para redireccionar la salida de un comando ala entrada de otro

I Por omision, la salida estandar sera redireccionada a laentrada estandar del otro programa

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 43: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Tuberias o Pipes

I Una tuberia sirve para redireccionar la salida de un comando ala entrada de otro

I Por omision, la salida estandar sera redireccionada a laentrada estandar del otro programa

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 44: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de tuberia

ls -l | grep ‘‘\.txt$’’

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 45: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Variables

I Las variables no necesitan ser declaradas

I Son dinamicas ademas (no tienes que ’alojar’ memoria)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 46: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Variables

I Las variables no necesitan ser declaradas

I Son dinamicas ademas (no tienes que ’alojar’ memoria)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 47: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Hola mundo! meet variables

#!/bin/bashSTR=’’Hello world!’’echo $STR

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 48: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Respaldo

#!/bin/bashOF=/var/my-backup-$(date +%Y%m%d).tgztar -cZf $OF /home/me/#!/bin/bash

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 49: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Hola mundo!

#!/bin/bashHELLO=Hellofunction hello {

local HELLO=Worldecho $HELLO

}echo $HELLOhelloecho $HELLO

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 50: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Condicionales

I Tenemos if’s en bash! Con diferentes sabores

I if expression then statement

I if expression then statement1 else statement2

I if expression1 then statement1 else if expression2 thenstatement2 else statement3

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 51: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Condicionales

I Tenemos if’s en bash! Con diferentes sabores

I if expression then statement

I if expression then statement1 else statement2

I if expression1 then statement1 else if expression2 thenstatement2 else statement3

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 52: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Condicionales

I Tenemos if’s en bash! Con diferentes sabores

I if expression then statement

I if expression then statement1 else statement2

I if expression1 then statement1 else if expression2 thenstatement2 else statement3

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 53: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Condicionales

I Tenemos if’s en bash! Con diferentes sabores

I if expression then statement

I if expression then statement1 else statement2

I if expression1 then statement1 else if expression2 thenstatement2 else statement3

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 54: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de if-then

#!/bin/bashif [ ‘‘foo’’ = ‘‘foo’’ ]; then

echo ‘‘Cierto, foo == foo’’fi

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 55: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de if-then-else

#!/bin/bashif [ ‘‘foo’’ = ‘‘foo’’ ]; then

echo ‘‘Cierto, foo == foo’’else

echo ‘‘Era falsa’’fi

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 56: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Cuando las variables y condicionales se encuentran

#!/bin/bashT1=’’foo’’T2=’’bar’’if [ $T1 = $T2 ]; then

echo ‘‘Cierto, ‘‘$T1’’== ‘‘$T2else

echo ‘‘No es cierto’’fi

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 57: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

–Fruit– Loops err... ciclos

I for - es un poco diferente, puedes iterar sobre cadenas opalabras en las cadenas

I while - ejecuta un pedazo de codigo si una condicion secumple, y para cuando es falsa

I until - ejecuta un pedazo de codigo, hasta que una expresionsea falsa

I Cuide sus expresiones, no vaya a caer en un ciclo infinito

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 58: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

–Fruit– Loops err... ciclos

I for - es un poco diferente, puedes iterar sobre cadenas opalabras en las cadenas

I while - ejecuta un pedazo de codigo si una condicion secumple, y para cuando es falsa

I until - ejecuta un pedazo de codigo, hasta que una expresionsea falsa

I Cuide sus expresiones, no vaya a caer en un ciclo infinito

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 59: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

–Fruit– Loops err... ciclos

I for - es un poco diferente, puedes iterar sobre cadenas opalabras en las cadenas

I while - ejecuta un pedazo de codigo si una condicion secumple, y para cuando es falsa

I until - ejecuta un pedazo de codigo, hasta que una expresionsea falsa

I Cuide sus expresiones, no vaya a caer en un ciclo infinito

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 60: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

–Fruit– Loops err... ciclos

I for - es un poco diferente, puedes iterar sobre cadenas opalabras en las cadenas

I while - ejecuta un pedazo de codigo si una condicion secumple, y para cuando es falsa

I until - ejecuta un pedazo de codigo, hasta que una expresionsea falsa

I Cuide sus expresiones, no vaya a caer en un ciclo infinito

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 61: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mi primer for

#!/bin/bashfor i in $( ls ); do

echo item: $idone

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 62: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mira mama, como en C

#!/bin/bashfor i in ‘seq 1 10‘;do

echo $idone

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 63: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

El while

#!/bin/bashCOUNTER=0while [ $COUNTER -lt 10 ]; doecho The counter is $COUNTERlet COUNTER=COUNTER+1done

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 64: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

hey! que era eso de let?

I Note el uso de let, let lo que hace es evaluar arithmeticamentela expresion que sigue

I Para mas en expresiones aritmeticas, da: ’man bash’ y buscaARITHMETIC EVALUATION

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 65: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

hey! que era eso de let?

I Note el uso de let, let lo que hace es evaluar arithmeticamentela expresion que sigue

I Para mas en expresiones aritmeticas, da: ’man bash’ y buscaARITHMETIC EVALUATION

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 66: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

El until

#!/bin/bashCOUNTER=20until [ $COUNTER -lt 10 ];doecho COUNTER $COUNTERlet COUNTER-=1

done

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 67: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Funciones

I Para hacer los programas ordenados

I Para reusar codigo

I Para ser recursivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 68: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Funciones

I Para hacer los programas ordenados

I Para reusar codigo

I Para ser recursivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 69: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Funciones

I Para hacer los programas ordenados

I Para reusar codigo

I Para ser recursivo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 70: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de funcion

#!/bin/bashfunction quit {exit

}function hello {echo Hello!

}helloquitecho foo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 71: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de funciones con argumentos

#!/bin/bashfunction quit {

exit}function e {

echo $1}e Helloe Worldquitecho foo

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 72: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Haciendo un menu

I Podemos hacer un menu en shell!

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 73: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Menu simple

#!/bin/bashOPTIONS=’’Hello Quit’’select opt in $OPTIONS; doif [ ‘‘$opt’’ = ‘‘Quit’’ ]; then

echo doneexit

elif [ ‘‘$opt’’ = ‘‘Hello’’ ]; thenecho Hello World

elseclearecho bad option

fidone

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 74: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Revisando argumentos

I Para completar el menu, tenemos forma de revisar losargumentos!

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 75: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mira mama, con argumentos!

#!/bin/bashif [ -z ‘‘$1’’ ]; then

echo usage: $0 directoryexit

fiSRCD=$1TGTD=’’/var/backups/’’OF=home-$(date +%Y%m%d).tgztar -cZf $TGTD$OF $SRCDdone

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 76: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Leyendo entradas de los usuarios

I Podemos leer entradas ’interactivas’ del usuario

I Notan que podemos hacer un facil juego en BASH?

I Si, un juego en texto :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 77: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Leyendo entradas de los usuarios

I Podemos leer entradas ’interactivas’ del usuario

I Notan que podemos hacer un facil juego en BASH?

I Si, un juego en texto :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 78: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Leyendo entradas de los usuarios

I Podemos leer entradas ’interactivas’ del usuario

I Notan que podemos hacer un facil juego en BASH?

I Si, un juego en texto :)

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 79: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

read

#!/bin/bashecho Por favor, meta su nombreread NAMEecho ‘‘Hi $NAME!’’

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 80: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

+ reads

#!/bin/bashecho Por favor, meta su nombre y apellidoread FN LNecho ‘‘Hi! $LN, $FN !’’

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 81: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Usando bash como calculadora

I Uno puede hacer uso del sistema de expresiones aritmeticas debash

I Si hacen algo como: echo 1+1 - no obtendran los resultadosadecuados (bash interpretara 1+1 como cadena, y como tal,la imprimira)

I Se puede hacer: echo $((1+1))

I Se puede hacer: echo $[1+1]

I Solo funciona con enteros. Si necesita algo mas alla de ello,use bc

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 82: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Usando bash como calculadora

I Uno puede hacer uso del sistema de expresiones aritmeticas debash

I Si hacen algo como: echo 1+1 - no obtendran los resultadosadecuados (bash interpretara 1+1 como cadena, y como tal,la imprimira)

I Se puede hacer: echo $((1+1))

I Se puede hacer: echo $[1+1]

I Solo funciona con enteros. Si necesita algo mas alla de ello,use bc

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 83: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Usando bash como calculadora

I Uno puede hacer uso del sistema de expresiones aritmeticas debash

I Si hacen algo como: echo 1+1 - no obtendran los resultadosadecuados (bash interpretara 1+1 como cadena, y como tal,la imprimira)

I Se puede hacer: echo $((1+1))

I Se puede hacer: echo $[1+1]

I Solo funciona con enteros. Si necesita algo mas alla de ello,use bc

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 84: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Usando bash como calculadora

I Uno puede hacer uso del sistema de expresiones aritmeticas debash

I Si hacen algo como: echo 1+1 - no obtendran los resultadosadecuados (bash interpretara 1+1 como cadena, y como tal,la imprimira)

I Se puede hacer: echo $((1+1))

I Se puede hacer: echo $[1+1]

I Solo funciona con enteros. Si necesita algo mas alla de ello,use bc

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 85: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Usando bash como calculadora

I Uno puede hacer uso del sistema de expresiones aritmeticas debash

I Si hacen algo como: echo 1+1 - no obtendran los resultadosadecuados (bash interpretara 1+1 como cadena, y como tal,la imprimira)

I Se puede hacer: echo $((1+1))

I Se puede hacer: echo $[1+1]

I Solo funciona con enteros. Si necesita algo mas alla de ello,use bc

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 86: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Si necesita uno debugear

I Use #!/bin/bash -x

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 87: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 88: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 89: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 90: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 91: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 92: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 93: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Mas recursos

I BASH Prog howto - http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

I man bash

I Advanced Programming -http://www.tldp.org/LDP/abs/html/

I shc - http://www.datsi.fi.upm.es/ frosal/

I http://www.mechulk.com/docs/bash.pdf

I irc.freenode.org #lidsol

I [email protected]

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 94: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Gracias por resistir hasta aqui!

I Tienen mas preguntas?

I man bash

I http://www.mechulk.com/docs/bash.pdf

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 95: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Gracias por resistir hasta aqui!

I Tienen mas preguntas?

I man bash

I http://www.mechulk.com/docs/bash.pdf

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash

Page 96: Introducción a la programación en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Gracias por resistir hasta aqui!

I Tienen mas preguntas?

I man bash

I http://www.mechulk.com/docs/bash.pdf

Mauro Parra Miranda [email protected] Introduccion a la programacion en Bash