Shell Script
BASH!
I ♥ #!/bin/bash

Agenda
- Scripting & Interpretes
- Bullet Two
- Bullet Three
Scripting
&
Interpretes


Interprete
Programa core del SO
Interpretar comandos a codigo maquina
Comunicacion a bajo nivel sin interface grafica
El mejor amigo del sysadmin!

Bash vs Others
Popularidad
Variantes - Promt - Atajos
Variantes
Parte del proyecto GNU
Brian Fox escribió Bash en 1987
Scripting
Permite ejecutar codigo paso a paso
Codigo no compilado
Programacion estructurada (algunos objetos)
Corren mediante un interprete
Tanto alto como bajo nivel



Tu mejor amigo
BASH

Comenzando...
#!/bin/bash
#!/bin/bash
# Script de hola mundo
echo "hola mundo"
Comillas en BASH
LEVEL="Elite""" -> echo "$LEVEL" => Elite
'' -> echo '$LEVEL' => $LEVEL
`` -> echo `tr 'a-z' 'A-Z' $LEVEL` => ELITE
Variables

#!/bin/bash
#Asignando variables
HOLA=1
#Llamando a la variable $HOLA
#Mostrando el contenido de la variable
echo $HOLAAsignacion directa sin tipo
Se muestran con $
Suelen ser mayusculas
Pegados a la izq al signo igual
Redireccionamiento
Stdout
Stderr
ls -l > ls-l.txtgrep da * 2> errores-de-grep.txtStdin

Pipes

Redirigir salida de un comando hacia otro
ps aux | grep "soy un virus" | wc -lCondicionales
IF
#!/bin/bash
if [ "petete" = "petete" ]; then
echo "Soy un minion"
fiIF ELSE

#!/bin/bash
FILE=~/.basrc
if [ -f $FILE ]; then
echo el fichero $FILE existe
else
echo fichero no encontrado
fiBucles
For
#!/bin/bash
for i in $( ls ); do
echo item: $i
doneWhile
#!/bin/bash
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo El contador es $CONTADOR
let CONTADOR=CONTADOR+1
doneUntil
#!/bin/bash
CONTADOR=20
until [ $CONTADOR -lt 10 ]; do
echo CONTADOR $CONTADOR
let CONTADOR-=1
doneFunciones

#!/bin/bash
function salir {
exit
}
function e {
echo $1
}
e Hola
e Mundo
salir
echo petete Parametros en linea de comando
#!/bin/bash
if [ -z "$1" ]; then
echo uso: $0 directorio
exit
fi
SRCD=$1
TGTD="/var/backups/"
OF=home-$(date +%Y%m%d).tgz
tar -cZf $TGTD$OF $SRCDLeer del teclado - READ

#!/bin/bash
read -p "Por favor, introduzca su nombre y primer apellido" NO AP
echo "¡Hola $AP, $NO!"Operadores alfabeticos
s1 = s2
s1 coincide con s2
s1 != s2
s1 no coincide con s2
s1 < s2
s1 es alfabéticamente anterior a s2, con el locale actual
s1 > s2
s1 es alfabéticamente posterior a s2, con el locale actual
-n s1
s1 no es nulo (contiene uno o más caracteres)
-z s1
s1 es nulo
Operadores numericos
+ (adición)
- (sustracción)
* (producto)
/ (división)
% (módulo)
Operadores numericos
relacionales
-lt (<)
-gt (>)
-le (<=)
-ge (>=)
-eq (==)
-ne (!=)

Case
echo "Lista de Idiomas:"
echo "[1] EN"
echo "[2] EN + ESA"
read -p "Elija una opcion ... " LANG
case $LANG in
1) echo "EN";;
2) echo "EN + ESA";;
*)
echo "No eligio un idioma correcto"
exit 1;;
esac
Debugging mode
#!/bin/bash -x debug.txt
set +x set debug
set -x unset debug
The great installer
http://pontus.watea.com.ar:8080/
Gracias

ShellScript BASH
By Emiliano Di Pierro
ShellScript BASH
- 614