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 $HOLA

Asignacion directa sin tipo

Se muestran con $

Suelen ser mayusculas

Pegados a la izq al signo igual

Redireccionamiento

Stdout

Stderr

ls -l > ls-l.txt
grep da * 2> errores-de-grep.txt

Stdin

Pipes

Redirigir salida de un comando hacia otro

ps aux | grep "soy un virus" | wc -l

Condicionales

IF

#!/bin/bash
if [ "petete" = "petete" ]; then
   echo "Soy un minion"
fi

IF ELSE

#!/bin/bash
FILE=~/.basrc
if [ -f $FILE ]; then
 echo el fichero $FILE existe
else
 echo fichero no encontrado
fi

Bucles

For

#!/bin/bash
for i in $( ls ); do
   echo item: $i
done

While

#!/bin/bash 
CONTADOR=0
while [  $CONTADOR -lt 10 ]; do
   echo El contador es $CONTADOR
   let CONTADOR=CONTADOR+1 
done

Until

#!/bin/bash 
CONTADOR=20
until [  $CONTADOR -lt 10 ]; do
  echo CONTADOR $CONTADOR
  let CONTADOR-=1
done

Funciones

#!/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 $SRCD

Leer 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