Ejemplo Script Basic o

download Ejemplo Script Basic o

If you can't read please download the document

description

sccrip

Transcript of Ejemplo Script Basic o

Shell Scripting - Introduccin

El shell interactivo

El shell es un ambiente de programacin capaz de automatizar casi cualquier cosa en su sistema Linux.

Una vez iniciado presenta un prompt ($ #) para indicar que est listo para recibir instrucciones por la entrada estndar (usualmente el teclado).

El shell de uso ms comn en Linux es bash, pero existen otros.

El shell puede ser cualquier aplicacin de usuario.

Que nos ofrece el shell?

El shell provee:

Una interfase interactiva textual al sistema operativo.

Un ambiente operacional.

Facilidades para iniciar y administrar comandos y programas.

Un lenguaje de programacin.

#!/bin/bash clear echo Hola Mundo

Un script muy sencillo...

#!/bin/bash clear SALUDO="Hola Mundo" echo $SALUDO

... lo complicamos con variables

Variables

De ambiente: Variables globales. Son pasadas a todos los procesos iniciados por el shell, incluyendo otros shells. Esto significa que los procesos hijo heredan el ambiente. Por convencin se expresan en maysculas.

De shell: Son variables locales. So especficas al shell corriente y no son heredadas por procesos hijo. En bash, las variables de shell pasan a ser de ambiente cuando son exportadas.

Variables de ambiente

Muchas de las variables son necesarias para la ejecucin de programas.

Para que esas variables esten disponibles deben ser exportadas para convertirlas en variables de ambiente.

$ export MIVARPara listar las variables de ambiente:

$ env

Un poquito mas complicado ...

#!/bin/bash HOLA=Hola function hola { local HOLA=Mundo echo $HOLA }echo $HOLA hola echo $HOLA

Ahora con sustitucin de comandos.

#!/bin/bash HOLA="Hola, hoy es el da $(date +%j) del ao."echo $HOLA

Estructuras condicionales if .. then

#!/bin/bash ...if [ !$# ]; thenecho Hay parametros fi...

Condicional if .. then .. else

#!/bin/bash ...if [ $(whoami) = root ]; then return 0 else return 1fi...

Condicional if .. then .. elif

#!/bin/bash ...if [ $USER = root ]; then echo El usuario es root elif [ $(whoami) = gallego ]; then echo El usuario es El G@llego else echo Vos quien sos? fi...

Ahora un ejemplo con argumentos.

#!/bin/bash FILE= $1 if [ -f $FILE ]; then echo el archivo $FILE existe else echo archivo no encontrado fi

Ciclos: for, while y until

El for es distinto a los de otros lenguajes de programacin. Bsicamente, le permite iterar sobre una serie de `palabras' contenidas dentro de una cadena.

El while ejecuta un trozo de cdigo si la expresin de control es verdadera, y termina cuando es falsa (o se encuentra una interrupcin explcita dentro del cdigo en ejecucin).

El until es casi idntico al while, excepto en que el cdigo se ejecuta mientras la expresin de control se evale como falsa.

Ejemplo de for...

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

Ejemplo de while...

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

Ejemplo de until...

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

La instruccin case...

case $USER; in root) echo Usuario es root;; gallego) echo Usuario es el G@llego;; *) echo Y este quien es?;; esac

Un pequeo ejemplo.

case "$1"; in *start) ;; *) gprintf "Usage: %s\n" "$(basename $0) {start}" exit 1 ;; esac

Ingresando informacin...

#!/bin/bash echo Por favor, introduzca su nombre: read NOMBRE echo "Hola $NOMBRE!"

Uso de argumentos...

$0 : Nombre del programa script.

$# : Cantidad de argumentos.

$1..$n : Argumentos segn su posicin en la lnea de comandos.

$@ : Lista de argumentos.

$? : Resultado de la ejecucin del ultimo comando.

$$ : PID del shell actual.

Ejemplo de script con argumentos.

#!/bin/bash if [ $# -ne 1 ]; then echo uso: $0 archivo exit 1 elif [ -f $1 ]; then echo el archivo $1 existe else echo archivo no encontrado fi

Operadores de cadenas de texto

[ s1 = s2 ]: s1 coincide con s2

[ s1 != s2 ]: s1 no coincide con s2

[ s1 < s2 ]: s1 es alfabticamente anterior a s2, con el locale actual

[ s1 > s2 ]: s1 es alfabticamente posterior a s2, con el locale actual

[ -n s1 ]: s1 no es nulo (contiene uno o ms caracteres)

[ -z s1 ] : s1 es nulo

Operadores aritmeticos

+ (adicin)

- (sustraccin)

* (producto)

/ (divisin)

% (mdulo)

** (exponenciacin)

Operadores relacionales aritmeticos

[ a -lt b ] equivale a ((a < b))

[a -gt b ] equivale a ((a > b))

[a -le b ] equivale a ((a = b))

[a -eq b ] equivale a ((a == b))

[a -ne b ] equivale a ((a != b))

Operadores lgicos

&& Y lgico (AND)

|| O lgico (OR)

Operadores sobre archivos

d archivo: Verdadero si archivo existe y es un directorio

e archivo: Verdadero si archivo existe

f archivo: Verdadero si archivo existe y es un archivo comn

L archivo: Verdadero si archivo existe y es un enlace simblico

r archivo: Verdadero si archivo existe y puede leerse

s archivo: Verdadero si archivo existe y tiene tamao mayor que 0

w archivo: Verdadero si archivo existe y es escribible

x archivo: Verdadero si archivo existe y es ejecutable

arch1 -ot arch2: Verdadero si arch1 es ms viejo que arch2

Algunos ejemplos prcticos

Confeccin de Manual

Usuario que usa ms espacio en disco

Archivos con bit SUID

Para ampliar estos temas

Bash Guide for Begginers - Matchtelt Garrelshttp://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html

Visiten el Proyecto de Documentacin de Linuxhttp://www.tldp.org