You are on page 1of 96

Shell: aquel desconocido

API de shell
Manos a la obra!

Introducción a la programación en Bash

Mauro Parra Miranda


mauropm@gmail.com

November 19, 2005

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Qué es un shell

I El shell es un interprete de comandos

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Qué es un shell

I El shell es un interprete de comandos


I Pero tambien es un lenguaje

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Qué 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Qué 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Por qué aprender a programarlo?

I Te evita hacer tareas repetitivas

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Por qué aprender a programarlo?

I Te evita hacer tareas repetitivas


I Es bueno conocerlos, algún dia resolverá algun problema como
con los scripts en /etc/rc.d

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Por qué aprender a programarlo?

I Te evita hacer tareas repetitivas


I Es bueno conocerlos, algún dia resolverá 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Por qué aprender a programarlo?

I Te evita hacer tareas repetitivas


I Es bueno conocerlos, algún dia resolverá 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Por qué aprender a programarlo?

I Te evita hacer tareas repetitivas


I Es bueno conocerlos, algún dia resolverá 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Por qué aprender a programarlo?

I Te evita hacer tareas repetitivas


I Es bueno conocerlos, algún dia resolverá 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

No se use en caso de...

I Hacer matemáticas intensas - Use Fortran (si aun existe)

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

No se use en caso de...

I Hacer matemáticas intensas - Use Fortran (si aun existe)


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

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

No se use en caso de...

I Hacer matemáticas 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

No se use en caso de...

I Hacer matemáticas 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ón critica

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

No se use en caso de...

I Hacer matemáticas 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ón critica
I Requerir estructuras de datos ’elegantes’ - Listas ligadas,
arboles

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

No se use en caso de...

I Hacer matemáticas 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ón critica
I Requerir estructuras de datos ’elegantes’ - Listas ligadas,
arboles
I Crear Aplicaciones propietarias - Es dificil de ofuscar :)

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Cómo creo un script?

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

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Cómo creo un script?

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


I Dale permisos de ejecución: chmod +x miscript.sh

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Cómo creo un script?

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


I Dale permisos de ejecución: chmod +x miscript.sh
I Ejecutalo: ./miscript.sh

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Cómo creo un script?

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


I Dale permisos de ejecución: chmod +x miscript.sh
I Ejecutalo: ./miscript.sh
I Listo!

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Cómo creo un script?

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


I Dale permisos de ejecución: chmod +x miscript.sh
I Ejecutalo: ./miscript.sh
I Listo!
I En serio, eso es todo. :)

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Hola mundo!

#!/bin/bash
echo ’Hello world’

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Redireccionando

I Redireccionar stdout a un archivo

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Ejemplo de redireccionamiento

ls -l >ls-l.txt

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Ejemplo de redireccionamiento

grep da * 2> grep-errors.txt

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Ejemplo de redireccionamiento

grep * 2>&1

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Ejemplo de tuberia

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

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Variables

I Las variables no necesitan ser declaradas

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Mira mamá, como en C

#!/bin/bash
for i in ‘seq 1 10‘;
do
echo $i
done

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Funciones

I Para hacer los programas ordenados

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Haciendo un menú

I Podemos hacer un menu en shell!

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Mira mamá, 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Si necesita uno debugear

I Use #!/bin/bash -x

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Mas recursos

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


Prog-Intro-HOWTO.html

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API 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

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API 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/

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API 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/

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API 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

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API 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 mauropm@gmail.com Introducción a la programación en Bash


Shell: aquel desconocido
API 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 Introducción a la programación en Bash


Shell: aquel desconocido
API de shell
Manos a la obra!

Gracias por resistir hasta aqui!

I Tienen mas preguntas?

Mauro Parra Miranda mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación 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 mauropm@gmail.com Introducción a la programación en Bash

You might also like