Introducción a la programación en Bash

Post on 24-May-2015

1.619 views 1 download

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

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Introduccion a la programacion en Bash

Mauro Parra Mirandamauropm@gmail.com

November 19, 2005

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Hola mundo!

#!/bin/bashecho ’Hello world’

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

ls -l >ls-l.txt

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

grep da * 2> grep-errors.txt

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

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

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

grep * 2>&1

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de redireccionamiento

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

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Ejemplo de tuberia

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

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Hola mundo! meet variables

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

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Haciendo un menu

I Podemos hacer un menu en shell!

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash

Shell: aquel desconocidoAPI de shell

Manos a la obra!

Si necesita uno debugear

I Use #!/bin/bash -x

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com

Mauro Parra Miranda mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion 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 mauropm@gmail.com Introduccion a la programacion en Bash