programacion shell bash
DESCRIPTION
Aprendiendo a programar en Shell.TRANSCRIPT
-
1
Introduccin a la programacin en
Shell Bash
-
2
ndice
INTRODUCCIN AL SHELL ........................................................................................ 3
Comodines ........................................................................................................................ 3
El comodn tilde ........................................................................................................... 4
Comodines extendidos .................................................................................................. 5
Redirecciones.................................................................................................................... 6
Caracteres especiales y entrecomillados........................................................................... 9
Entrecomillado ............................................................................................................. 9
Caracteres de escape ................................................................................................... 11
Variables de Entorno ...................................................................................................... 12
Personalizar el PROMPT ........................................................................................... 12
PROGRAMACIN BASICA DE SHELL .................................................................... 15
Scripts y Funciones ......................................................................................................... 15
Encabezado y comentarios ............................................................................................. 16
Operaciones aritmticas .................................................................................................. 16
Variables de shell............................................................................................................ 17
Parmetros posicionales ............................................................................................. 17
Las variables $*, $@, $#, $?....................................................................................... 17
Leer entrada de usuario............................................................................................... 18
Uso de variables ......................................................................................................... 19
Control de Flujo .............................................................................................................. 20
El comando TEST ...................................................................................................... 20
Sentencias condicionales ............................................................................................ 22
Sentencias IF,ELIF,ELSE....................................................................................... 22
Sentencia CASE ..................................................................................................... 23
Bucles ......................................................................................................................... 23
Bucle for ................................................................................................................. 23
Bucles while y until ................................................................................................ 24
Break y continue ..................................................................................................... 25
-
3
INTRODUCCIN AL SHELL Comodines
-
4
El comodn tilde
-
5
Comodines extendidos
Anteriormente vimos
-
6
Redirecciones
-
7
Pipes
-
8
-
9
Caracteres especiales y entrecomillados
Entrecomillado
-
10
Adems del entrecomillado dbil y el entrecomillado fuerte, aprovechamos para explicar el otro tipo de entrecomillado existente
en Bash: el entrecomillado con acentos graves (tecla al lado de la tecla p).
Este tipo de entrecomillado se utiliza cuando queremos guardar en una variable el resultado de la ejecucin de un comando.
Supongamos que queremos guardar en una variable lineas el nmero de lneas que tiene el fichero /etc/passwd $ lineas=`cat /etc/passwd | wc -l`
-
11
Caracteres de escape
-
12
Variables de Entorno
Personalizar el PROMPT
-
13
-
14
-
15
PROGRAMACIN BASICA DE SHELL Scripts y Funciones Un script es un fichero que contiene comandos bash ejecutables.
Existen tres formas distintas de ejecutar un script de bash:
Cambiando los permisos del fichero script y haciendolo ejecutable:
chmod +x nombreFichero.sh
Utilizando la sintaxis: bash nombreFichero.sh
Utilizando esta otra sintaxis: . nombreFichero.sh
-
16
Encabezado y comentarios La primera linea en un script de bash ha de ser:
#!/bin/bash
con ella le decimos al sistema que cuando se ejecute el script, las ordenes se han de interpretar bajo la shell BASH, que se encuentra
en /bin/bash.
A lo largo del script podemos introducir los comentarios que
queramos, basta con anteponer el smbolo # a la cadena.
# esto es un comentario
Operaciones aritmticas Pruebe esto en la lnea de comandos o en un script:
echo 1 + 1
Si esperaba ver '2', quedar desilusionado. Qu hacer si quiere que BASH evale unos nmeros? La solucin es sta:
echo $((1+1))
Si necesita usar fracciones, u otras matemticas, puede utilizar bc
para evaluar expresiones aritmticas.
Si ejecuta "echo $[3/4]" en la lnea de comandos, devolver 0, porque bash slo utiliza enteros en sus respuestas.
Si se desea guardar el resultado de una operacin aritmtica en una
variable:
var=$((1+1))
Ntese que no es necesario utilizar el acento grave para entrecomillar
$((1+1))
Las operaciones permitidas son: +, -, *, /, **(exponenciacin), % (resto de divisin entera)
-
17
Variables de shell
Parmetros posicionales
Las variables $*, $@, $#, $?
-
18
La variable $? nos permite conocer el resultado de la ejecucin del
ltimo comando ejecutado, de forma que si se ha ejecutado satisfactoriamente, $? almacenar el valor 0 y si no se ha ejecutado
correctamente almacenar un 1. Hay que fijarse en que bash trabaja con lgica negativa, al contrario que Java o C en el que el valor
verdadero (true) es el 1 y el falso (false) es 0.
Leer entrada de usuario
Para leer la entrada de datos de un usuario por la entrada estandar: el teclado utilizamos la orden read de la siguiente forma:
read var
guardando en la variable var la cadena escrita por el usuario hasta que pulse el INTRO
Las variables dentro de los scripts son siempre globales, lo que
significa que si dentro de una funcin se modifica el valor de una variable definida en el script principal, sta modificar su valor para
el resto del script. Para evitar esto se pueden definir variables locales a una funcin de la siguiente forma:
-
19
Ejemplo 1
Function saludar() {
local var=0
echo El valor de var dentro de la funcin es: $var }
var=1
saludar echo El valor de var fuera de la funcin es: $var
La ejecucin dara como resultado:
El valor de var dentro de la funcin es: 0 El valor de var fuera de la funcin es: 1
Uso de variables
El uso de las variables se realiza de dos formas:
Cuando se le est asignando valor a la variable se ha de especificar el
nombre sin el smbolo $ delante:
var=1
Cuando se desea ver el contenido de una variable se utiliza el smbolo $ delante del nombre:
echo El valor de la variables es $var
-
20
Control de Flujo
El comando TEST
En las sentencias de control de flujo es muy importante las condiciones que van a decidir si el flujo de ejecucin va por un
camino u otro.
Comparacin de cadenas
Comparacin numrica de enteros
Bash tambin puede comparar cadenas cuyos caracteres son enteros.
-
21
Comprobar atributos de ficheros
-
22
Sentencias condicionales
Sentencias IF,ELIF,ELSE
Ejemplo 1
if test e /etc/passwd;then
echo el fichero /etc/passwd existe
fi
Ejemplo 2
if test $cad1 = $cad2;then
echo las cadenas son iguales
else
echo las cadenas son distintas
fi
Ejemplo 3
if test $num1 eq $num2;then
echo Los nmeros son iguales
elif test $num1 gt $num2;then
echo El primer numero es mayor que el segundo
else
echo El segundo numero es mayor que el primero
fi
-
23
Sentencia CASE
Ejemplo 1
case $caract in
[A-Z]) echo el carcter es una mayscula;;
[a-z]) echo el carcter es una minscula;;
[0-9]) echo el carcter es un dgito;;
*) el carcter es un smbolo
esac
Bucles
Bucle for
-
24
Bucles while y until
-
25
Ejemplo 1
opc=0
while test $opc != 2;do
echo 1.- Seguir
echo 2.- Salir
read opc
case $opc in
1) Echo Seguimos;;
2) echo Adios;;
*) ;;
esac
done
Ejemplo 2
opc=0
until test $opc = 2;do
echo 1.- Seguir
echo 2.- Salir
read opc
case $opc in
3) Echo Seguimos;;
4) echo Adios;;
*) ;;
esac
done
Break y continue
Los comandos break y continue permiten modificar el flujo de ejecucin de un script. Normalmente se utilizan dentro de los bucles,
aunque es posible encontrarlos dentro de ifs y cases.
Break: Rompe la ejecucin de un bucle, nos manda al final del bucle.
Continue: Continua la ejecucin de un bucle, nos manda al principio
de este.
Tanto break como continue actan sobre el bucle en el que se estn ejecutando. Si este es un bucle anidado y queremos interrumpir la
ejecucin normal de varios de los bucles usaremos break N y continue N, siendo N el nmero de bucles que queremos alterar.