Download - 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Mauro Parra Miranda [email protected] 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
Mauro Parra Miranda [email protected] 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
Mauro Parra Miranda [email protected] 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
Mauro Parra Miranda [email protected] 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
Mauro Parra Miranda [email protected] 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
Mauro Parra Miranda [email protected] 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
Mauro Parra Miranda [email protected] 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 [email protected] 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 [email protected] 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 [email protected] Introduccion a la programacion en Bash