25
1 Introducción a la programación en Shell Bash

Programacion Shell Bash

Embed Size (px)

DESCRIPTION

Aprendiendo a programar en Shell.

Citation preview

  • 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.