Sie sind auf Seite 1von 25

scripts de shell

Que es un script

La traduccin literal de la palabra es Guin (tal cual como en una pelcula, novela, etc) Se conoce tambin como archivo de rdenes o archivo por lotes Es una especie de programa realmente simple almacenado en un archivo de texto ASCII Funciona bajo otro programa (en este caso la shell) automatizando algunas tareas

Script

Adems de ejecutar una secuencia de comandos es capaz de soportar algunas decisiones. En linux comienzan teniendo algunos caracteres especiales reservados y son capaces de almacenar variables. Algunos caracteres especiales reservados en los scripts:

#: Es utilizado para comentar una lnea completa $: Es utilizado para identificar variables al momento de llamarlas \: Es caracter de escape para identificar algunos espacios y otras secuencias

Script

Las comillas pueden ser de varios tipos y cada una de ellas tuene un uso diferente

: Comilla doble, permite el uso de caracteres especiales dentro de la cadena que se utiliza Ejemplo:

echo hola $USER estas en $PWD El resultado sera: hola usuario estas en /carpeta

': Comilla simple, desactiva todos los caracteres especiales, excepto a ella misma dentro de la cadena Ejemplo:

echo 'hola $USER estas en $PWD' El resultado sera: hola $USER estas en $PWD

Script

`:Comilla oblicua o tilde, es utilizado para almacenar el resultado de un programa para ser utilizado por otro comando Ejemplo:

echo `ls -al` El resultado por pantalla sera el mismo que el comando en s.

echo

El comando ya mostrado 'echo' se utiliza para imprimir una cadena en la salida estndar (stdout) Lo que ste imprima va condicionado por la clase de comillas que se estn utilizando en el momento (como lo vimos anteriormente)

Echo (opciones)

-e: Activa algunas de las secuencias a continuacin:


\a: sonido de alerta (sonido del speaker) \b: backspace \n: nueva linea \r: retorno de carro \t: tabulador \\: backslash

read

El comando read sirve para capturar algun dato desde la entrada estndar (stdin) y guardarlo en una variable Ejemplo:
#!/bin/sh #probando echo + read echo ingrese una cadena de caracteres read CADENA echo la cadena ingresada es $CADENA

Operaciones Matemticas

Se hacen mediante el comando expr


Ejemplo: echo `expr 1+1` Eso muestra el resultado de la suma por pantalla

Se puede usar en la consola normalmente Para multiplicar se debe utilizar '\*' en vez de slo '*' debido a que ste es un comodn en la consola El smbolo '%' es para mostrar el resto de una divisin

Estado de la salida

Para ver el estado de la salida se utiliza la variable especial y reservada $? Ejemplo:


rm safasfdas.asd El sistema entrega rm: no se puede borrar safasfdas.asd: No existe el fichero o el directorio Si despues de eso se ejecuta echo $? el sistema entregar un valor distinto a 0 para indicar el error

$? es una variable muy til cuando se hacen los scripts

Comodines

*: Toma cualquier string o conjunto de caracteres ?: Toma cualquier caracter en ese lugar [...]: Toma cualquiera de los caracteres dentro de las llaves Ejemplo: Ejecutar ls [abc]* dentro del directorio /bin El ! o el ^ funcionan como modificador para que salca cualquier caracter no indicado dentro de las llaves (ejecutar ls [!abc])

Decisiones

Son importantes para hacer que el script automatice ciertas tareas. De hecho la logica no es logica sin ellas. Dentro de esto vamos a ver condiciones y ciclos Lo que para nosotros es Si o es No, para el computador es 0 o es 1 Probemos lo siguiente en el BC (la calculadora de la shell de unix)

1+1 53 5 > 3 (que responde esta ltima?) 5 < 3 (Respuesta?) Conclusin:


En la shell de UNIX el '0' significa 'Si' o 'Verdadero' Cualquier valor diferente a '0' se toma como 'No' o 'Falso'

Recuerden que la shell y el bc son dos programas diferentes y por ende tienen distintas formas de interpretar el 1 y el 0

if

La condicin if se puede usar en el scriptg de shell de una forma bastante similar a la de los lenguajes de programacin.

if condicion then
comando a ejecutar si la condicin es verdadero o el estado de salida es 0

fi

Recuerden que una condicin se define como nada ms que una comparacin entre dos valores

test

Se usa para ver si un comando o una comparacin es verdadera Ejemplo: test <comando> o test [comparacion] Si es verdadero entrega un 0, de ser falso entrega un valor diferente Operandos que utiliza:

-eq: Es igual a -ne: No es igual a -lt: Es menos que -le: Es menor o igual a -gt: Es mayor a -ge: Es mayor o igual

if..else

Es igual al if normal, pero se puede hacer un comando extra de no cumplirse la condicin Ejemplo:

if condicion then
la condicion es cero ejecuta comandos en serie hasta el 'else'

else
si la condicion es falsa se ejecuta esto hasta el 'fi'

fi

if..else
#!/bin/sh # # Script para verificar si un numero es positivo # if [ $# -eq 0 ] then echo "$0 : Usted debe ingresar slo numeros enteros" exit 1 fi if test $1 -gt 0 then echo "$1 el nmero es positivo else echo "$1 el nmero es negativo" fi

if..else

Construir un script de shell que tenga un if else anidado (15 minutos)

Ciclos

Un ciclo se define como que un computador puede repetir una instruccin varias veces hasta que cierta condicin se cumpla. La shell soporta ciclos del tipo for y tipo while

Ciclo for

for { variable } in { lista } do


comandos a ejecutar

done

Variable es una variable cualquiera y 'lista' es una lista de valores que va a tomar la variable durante la ejecucin del ciclo Ejemplo:

Ciclo for

for $i in 1 2 3 4 5 do
echo esta es la iteracion numero $i

done

Tambin se puede utilizar una sintaxis similar a la del lenguaje 'C' for do
echo esta es la iteracion numero $i

(( i = 0 ; i <= 5 ; i++ ))

done

Ciclo for

Tener en cuenta que al usar la sintaxis de 'C' la shell evala la primera condicin ANTES de entrar al ciclo Ejercicio: Hacer un script que tenga un ciclo for anidado (15 minutos)

Ciclo while

Sintaxis: while [ condicion ] do


comando 1 comando 2 comando 3 comando 4

done

Case

Sirve para comparar una variable cualquiera con varias opciones, y dependiendo de la opcin se ejecuta una instruccin. Ejemplo:
case $VAR in a)
echo presionaste a

;; *)
echo presionaste cualquier otra cosa que no es a

;; esac

testing

Para hacer testing de los scripts hechos se deben ejecutar de la siguiente forma:

sh -x <script>

Das könnte Ihnen auch gefallen