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
Shell: aquel desconocido API de shell Manos a la obra!
Qu´e es un shell
I
El shell es un interprete de comandos
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Qu´e es un shell
I
El shell es un interprete de comandos
I
Pero tambien es un lenguaje
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Qu´e 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
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Qu´e 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 comandos sencillos, que en conjunto son considerablemente poderosos.
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Por qu´e aprender a programarlo?
I
Te evita hacer tareas repetitivas
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Por qu´e aprender a programarlo?
I
Te evita hacer tareas repetitivas
I
Es bueno conocerlos, alg´ un dia resolver´a algun problema como con los scripts en /etc/rc.d
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Por qu´e aprender a programarlo?
I
Te evita hacer tareas repetitivas
I
Es bueno conocerlos, alg´ un dia resolver´a algun problema como con 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)
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Por qu´e aprender a programarlo?
I
Te evita hacer tareas repetitivas
I
Es bueno conocerlos, alg´ un dia resolver´a algun problema como con 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 si vaciaras lo que harias en el prompt de comandos, pero escrito en un archivo.
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Por qu´e aprender a programarlo?
I
Te evita hacer tareas repetitivas
I
Es bueno conocerlos, alg´ un dia resolver´a algun problema como con 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 si vaciaras lo que harias en el prompt de comandos, pero escrito en un archivo.
I
Es ideal para hacer algunos prototipos
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Por qu´e aprender a programarlo?
I
Te evita hacer tareas repetitivas
I
Es bueno conocerlos, alg´ un dia resolver´a algun problema como con 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 si vaciaras lo que harias en el prompt de comandos, pero escrito en 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
No se use en caso de...
I
Hacer matem´aticas intensas - Use Fortran (si aun existe)
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
No se use en caso de...
I
Hacer matem´aticas intensas - Use Fortran (si aun existe)
I
Requerir super portabilidad - Use Java, .NET o ’C’
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
No se use en caso de...
I
Hacer matem´aticas intensas - Use Fortran (si aun existe)
I
Requerir super portabilidad - Use Java, .NET o ’C’
I
Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
No se use en caso de...
I
Hacer matem´aticas intensas - Use Fortran (si aun existe)
I
Requerir super portabilidad - Use Java, .NET o ’C’
I
Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas
I
Aplicaciones de misi´ on critica
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
No se use en caso de...
I
Hacer matem´aticas intensas - Use Fortran (si aun existe)
I
Requerir super portabilidad - Use Java, .NET o ’C’
I
Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas
I
Aplicaciones de misi´ on critica
I
Requerir estructuras de datos ’elegantes’ - Listas ligadas, arboles
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
No se use en caso de...
I
Hacer matem´aticas intensas - Use Fortran (si aun existe)
I
Requerir super portabilidad - Use Java, .NET o ’C’
I
Aplicaciones complejas - Por ejemplo, que requieran estructuras mas elaboradas
I
Aplicaciones de misi´ on critica
I
Requerir estructuras de datos ’elegantes’ - Listas ligadas, arboles
I
Crear Aplicaciones propietarias - Es dificil de ofuscar :)
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
API del shell
I
Todo comando de *nix puede ser invocado
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
API del shell
I
Todo comando de *nix puede ser invocado
I
Comandos de testing
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
API del shell
I
Todo comando de *nix puede ser invocado
I
Comandos de testing
I
loops - ciclos
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
C´omo creo un script?
I
Crea un archivo miscript.sh con tu editor de textos favorito
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
C´omo creo un script?
I
Crea un archivo miscript.sh con tu editor de textos favorito
I
Dale permisos de ejecuci´ on: chmod +x miscript.sh
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
C´omo creo un script?
I
Crea un archivo miscript.sh con tu editor de textos favorito
I
Dale permisos de ejecuci´ on: chmod +x miscript.sh
I
Ejecutalo: ./miscript.sh
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
C´omo creo un script?
I
Crea un archivo miscript.sh con tu editor de textos favorito
I
Dale permisos de ejecuci´ on: chmod +x miscript.sh
I
Ejecutalo: ./miscript.sh
I
Listo!
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
C´omo creo un script?
I
Crea un archivo miscript.sh con tu editor de textos favorito
I
Dale permisos de ejecuci´ on: chmod +x miscript.sh
I
Ejecutalo: ./miscript.sh
I
Listo!
I
En serio, eso es todo. :)
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Hola mundo!
#!/bin/bash echo ’Hello world’
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Corriendo el script
I
Guardarlo en el archivo script.sh
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Corriendo el script
I
Guardarlo en el archivo script.sh
I
chmod +x script.sh
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Respaldo
#!/bin/bashLimpieza DATE=‘date +%d-%m-%y‘ USER=foobar echo ’Comenzando el backup’ tar cjvf /tmp/$USER-$DATE.tbz /home/foobar echo ’Backup terminado’
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Redireccionando
I
Redireccionar stdout a un archivo
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Redireccionando
I
Redireccionar stdout a un archivo
I
Redireccionar stderr a un archivo
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Redireccionando
I
Redireccionar stdout a un archivo
I
Redireccionar stderr a un archivo
I
Redireccionar stdout a stderr
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de redireccionamiento
ls -l >ls-l.txt
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de redireccionamiento
grep da * 2> grep-errors.txt
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de redireccionamiento
grep da * 1>&2 grep-errors.txt
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de redireccionamiento
grep * 2>&1
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de redireccionamiento
rm -f $(find / -name core) &> /dev/null
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Tuberias o Pipes
I
Una tuberia sirve para redireccionar la salida de un comando a la entrada de otro
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Tuberias o Pipes
I
Una tuberia sirve para redireccionar la salida de un comando a la entrada de otro
I
Por omision, la salida estandar sera redireccionada a la entrada estandar del otro programa
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de tuberia
ls -l | grep ‘‘\.txt$’’
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Variables
I
Las variables no necesitan ser declaradas
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Hola mundo! meet variables
#!/bin/bash STR=’’Hello world!’’ echo $STR
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Respaldo
#!/bin/bash OF=/var/my-backup-$(date +%Y%m%d).tgz tar -cZf $OF /home/me/#!/bin/bash
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Hola mundo!
#!/bin/bash HELLO=Hello function hello { local HELLO=World echo $HELLO } echo $HELLO hello echo $HELLO
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Condicionales
I
Tenemos if’s en bash! Con diferentes sabores
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Condicionales
I
Tenemos if’s en bash! Con diferentes sabores
I
if expression then statement
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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 then statement2 else statement3
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de if-then
#!/bin/bash if [ ‘‘foo’’ = ‘‘foo’’ ]; then echo ‘‘Cierto, foo == foo’’ fi
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de if-then-else
#!/bin/bash if [ ‘‘foo’’ = ‘‘foo’’ ]; then echo ‘‘Cierto, foo == foo’’ else echo ‘‘Era falsa’’ fi
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Cuando las variables y condicionales se encuentran
#!/bin/bash T1=’’foo’’ T2=’’bar’’ if [ $T1 = $T2 ]; then echo ‘‘Cierto, ‘‘$T1’’== ‘‘$T2 else echo ‘‘No es cierto’’ fi
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
–Fruit– Loops err... ciclos
I
for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
–Fruit– Loops err... ciclos
I
for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas
I
while - ejecuta un pedazo de codigo si una condicion se cumple, y para cuando es falsa
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
–Fruit– Loops err... ciclos
I
for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas
I
while - ejecuta un pedazo de codigo si una condicion se cumple, y para cuando es falsa
I
until - ejecuta un pedazo de codigo, hasta que una expresion sea falsa
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
–Fruit– Loops err... ciclos
I
for - es un poco diferente, puedes iterar sobre cadenas o palabras en las cadenas
I
while - ejecuta un pedazo de codigo si una condicion se cumple, y para cuando es falsa
I
until - ejecuta un pedazo de codigo, hasta que una expresion sea falsa
I
Cuide sus expresiones, no vaya a caer en un ciclo infinito
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mi primer for
#!/bin/bash for i in $( ls ); do echo item: $i done
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mira mam´a, como en C
#!/bin/bash for i in ‘seq 1 10‘; do echo $i done
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
El while
#!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo The counter is $COUNTER let COUNTER=COUNTER+1 done
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
hey! que era eso de let?
I
Note el uso de let, let lo que hace es evaluar arithmeticamente la expresion que sigue
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
hey! que era eso de let?
I
Note el uso de let, let lo que hace es evaluar arithmeticamente la expresion que sigue
I
Para mas en expresiones aritmeticas, da: ’man bash’ y busca ARITHMETIC EVALUATION
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
El until
#!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]; do echo COUNTER $COUNTER let COUNTER-=1 done
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Funciones
I
Para hacer los programas ordenados
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Funciones
I
Para hacer los programas ordenados
I
Para reusar codigo
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de funcion
#!/bin/bash function quit { exit } function hello { echo Hello! } hello quit echo foo
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Ejemplo de funciones con argumentos
#!/bin/bash function quit { exit } function e { echo $1 } e Hello e World quit echo foo
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Haciendo un men´u
I
Podemos hacer un menu en shell!
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Menu simple #!/bin/bash OPTIONS=’’Hello Quit’’ select opt in $OPTIONS; do if [ ‘‘$opt’’ = ‘‘Quit’’ ]; then echo done exit elif [ ‘‘$opt’’ = ‘‘Hello’’ ]; then echo Hello World else clear echo bad option fi done Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Revisando argumentos
I
Para completar el menu, tenemos forma de revisar los argumentos!
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mira mam´a, con argumentos!
#!/bin/bash if [ -z ‘‘$1’’ ]; then echo usage: $0 directory exit fi SRCD=$1 TGTD=’’/var/backups/’’ OF=home-$(date +%Y%m%d).tgz tar -cZf $TGTD$OF $SRCD done
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Leyendo entradas de los usuarios
I
Podemos leer entradas ’interactivas’ del usuario
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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?
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
read
#!/bin/bash echo Por favor, meta su nombre read NAME echo ‘‘Hi $NAME!’’
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
+ reads
#!/bin/bash echo Por favor, meta su nombre y apellido read FN LN echo ‘‘Hi! $LN, $FN !’’
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Usando bash como calculadora
I
Uno puede hacer uso del sistema de expresiones aritmeticas de bash
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Usando bash como calculadora
I
Uno puede hacer uso del sistema de expresiones aritmeticas de bash
I
Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (bash interpretara 1+1 como cadena, y como tal, la imprimira)
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Usando bash como calculadora
I
Uno puede hacer uso del sistema de expresiones aritmeticas de bash
I
Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (bash interpretara 1+1 como cadena, y como tal, la imprimira)
I
Se puede hacer: echo $((1+1))
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Usando bash como calculadora
I
Uno puede hacer uso del sistema de expresiones aritmeticas de bash
I
Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (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]
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Usando bash como calculadora
I
Uno puede hacer uso del sistema de expresiones aritmeticas de bash
I
Si hacen algo como: echo 1+1 - no obtendran los resultados adecuados (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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Si necesita uno debugear
I
Use #!/bin/bash -x
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-Intro-HOWTO.html
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-Intro-HOWTO.html
I
man bash
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-Intro-HOWTO.html
I
man bash
I
Advanced Programming http://www.tldp.org/LDP/abs/html/
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-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/
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-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
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Mas recursos
I
BASH Prog howto - http://www.tldp.org/HOWTO/BashProg-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]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Gracias por resistir hasta aqui!
I
Tienen mas preguntas?
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API de shell Manos a la obra!
Gracias por resistir hasta aqui!
I
Tienen mas preguntas?
I
man bash
Mauro Parra Miranda
[email protected]
Introducci´ on a la programaci´ on en Bash
Shell: aquel desconocido API 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]
Introducci´ on a la programaci´ on en Bash