Beruflich Dokumente
Kultur Dokumente
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)
\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
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
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
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)
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
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
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
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>