shell-ii

Upload: alexistorres

Post on 17-Feb-2018

246 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 shell-II

    1/25

    SHELL SCRIPTING II

    Your company information

  • 7/23/2019 shell-II

    2/25

    IST ABACO

    INTRODUCCION

    - Condicionales: If-Then, Case-Esac, For, While

    - Operadores

    - Funciones

    - Ejemplos

  • 7/23/2019 shell-II

    3/25

    IST ABACO

    CONDICIONALES: I ! THEN

    - Tambien conocido como constructor condicional (if)

    - ebemos tener presente !ue el principal objeti"o de un shell es el deejecutar #rdenes, por tanto, cuando se dise$o el constructor if seplante# tomar como e%presi#n l#&ica la propia ejecuci#n de unpro&rama'

    - En este caso se considera como cierto el hecho !ue un pro&ramatermine sin errores como falso !ue se produca al&*n error en laejecuci#n del mismo'

    NOTA: El c#di&o de retorno de los procesos es un entero de + bits'Cuando este entero es cero se considera !ue la ejecuci#n no haencontrado nin&*n error' El "alor de salida de la *ltima lnea de #rdenesejecutada se puede acceder en la "ariable .

  • 7/23/2019 shell-II

    4/25

    IST ABACO

    SINTA"IS I!THEN

    ifordent#$n

    Ordenes a Ejecutar

    $%&$Ordenes a Ejecutar

    fi

  • 7/23/2019 shell-II

    5/25

    IST ABACO

    SINTA"IS I!THEN

    E'$mp%o (:

    if cp /root/bin/fichero't%t /opt/clase01't%t

    t#$n echo 2Copia correcta3$%&$

    echo 2Error en la copia3

    fi

  • 7/23/2019 shell-II

    6/25

    IST ABACO

    SINTA"IS I!THEN

    E'$mp%o ):

    pa&&*+,-a.aco-$c#o /In0r$&a %a contra&$na &up$r!&$cr$ta:-

    r$a+ PASS1ORD

    if 2/3PASS1ORD- ,, /3pa&&*+- 45t#$n

    $c#o /Tu c%a6$ $& corr$cta :7-

    $%&$$c#o /INTRUSO8 Acc$&o DENEGADO-

    fi

  • 7/23/2019 shell-II

    7/25

    IST ABACO

    SINTA"IS I!THEN

    R$cor+ar:- 4ue el espacio es mu importante en la instrucci#n if'

    - 5iempre !ue uses IF-T6E7 tendr8s !ue utiliar la sentencia fipara poner fin a un caso de uso'

    - Tambi9n puede reemplaar el ;; con < ; =ara probar si las

    "ariables no son i&uales'

    - 6a otras se$ales !ue puedes usar en lu&ar de ;; para otrostipos de comparaciones' >a si&uiente tabla muestra lasdiferentes e%presiones permitidas'

  • 7/23/2019 shell-II

    8/25

    IST ABACO

    SINTA"IS I!THEN

    CO9PARACIONES

    !$ I?@A> a

    !n$ 7o es I?@A> a

    !%t BE7O5 !ue

    !%$ BE7O5 !ue o I?@A> a

    !0t BA5 !ue

    !0$ BA5 !ue o I?@A> a

  • 7/23/2019 shell-II

    9/25

    IST ABACO

    SINTA"IS I!THEN

    CO9PARACIONES

    !& El archi"o EI5TE no esta DACIO

    !f El AC6IDO EI5TE no es un IECTOIO

    !+ E> IECTOIO EI5TE

    !; El AC6IDO es EEC@TAG>E

    !* E> AC6IDO es >EIG>E

    !r E> AC6IDO es E5CIGIG>E

  • 7/23/2019 shell-II

    10/25

    IST ABACO

    SINTA"IS I!THEN

    E'$mp%o in0r$&a tu nom.r$:>

    r$a+ u&$rnam$if2 !&3?u&$rnam$@t;t 45t#$n EDAD,cat 3+ir=3?u&$rnam$@t;t $c#o >Tu EDAD $&: 3EDAD>

    $%&$ $c#o >No &$ $ncontro $+a+ para $% u&uario : >

    fi

  • 7/23/2019 shell-II

    11/25

    IST ABACO

    SINTA"IS I!THEN

    E'$mp%o :

    $c#o >In0r$&a tu E+a+:>r$a+$+a+if2 >3$+a+> !%t ) 4 FF 2 >3$+a+> !0$ 45t#$n

    $c#o >Lo &i$nto tu EDAD no $&ta $n $% ran0o p$rmiti+o>$%if2 >3$+a+> !0$ ) 4 2 >3$+a+> !%t Ti$n$& )&>

    $%if 2 >3$+a+> !0$ $+a+> !%t 45t#$n

    $c#o >Ti$n$&

    $%if2 >3$+a+> !0$ 4 2 >3$+a+> !%t 45 t#$n$c#o >Ti$n$& &>

    fi

  • 7/23/2019 shell-II

    12/25

    IST ABACO

    ESTRUCTURA BUCLE: 1HILE

    SINTA"IS 1HILE5i&uiendo la misma filosofa del if, se define el bucle Hhile:

    *#i%$ orden a ejecutar+o

    orden a ejecutar

    +on$

  • 7/23/2019 shell-II

    13/25

    IST ABACO

    SINTA"IS 1HILE

    EE9PLO:i,5

    *#i%$t$&t 3i !%t (+o$c#o 3i%$t i,iJ(

    +on$

  • 7/23/2019 shell-II

    14/25

    IST ABACO

    SINTA"IS 1HILE EE9PLOK:

    rpta,corr$cto,fa%&$

    *#i%$ >3corr$cto> , >tru$>J+o $c#o >A+i6ina un num$ro $ntr$ $% ( y (>

    r$a+ NU9

    if >3NU9> !%t (J KK >3NU9> !0t (JL t#$n echo El numero debe estar entre 0 01

    elif>3NU9> !$ >3rpta>JL t#$n

    echo >a respuesta es:rpta corr$cto,tru$

    $%&$echo espuesta e!ui"ocada

    fi

    +on$

  • 7/23/2019 shell-II

    15/25

    IST ABACO

    conta+or,

    *#i%$:

    +o&%$$p (conta+or,$;pr 3COUNTER J ($c#o >E% pro0rama &$ $'$cutara $n 3conta+or &$0>

    +on$

    SINTA"IS 1HILE

    EE9PLOM:

  • 7/23/2019 shell-II

    16/25

    IST ABACO

    SINTA"IS OR

    for6aria.%$ inexpreg1 expreg2 ... expregn

    +o+on$

  • 7/23/2019 shell-II

    17/25

    IST ABACO

    SINTA"IS OR

    foriin &$ ( +o

    $c#o 3i+on$

    EE9PLO

  • 7/23/2019 shell-II

    18/25

    IST ABACO

    SINTA"IS OR

    EE9PLO

    =.in=.afor i in=opt=$'$mp%o&=pru$.a=Qt;t5 +o

    %& !%a =opt=$'$mp%o&=pru$.a=Qt;t =opt=$'$mp%o&=pru$.a=r$&u%ta+ot;t

    +on$

  • 7/23/2019 shell-II

    19/25

    IST ABACO

    SINTA"IS CASE

    Es una estructura parecida a la de =ascal, cuando entra en la estructura,sale cuando empiece la si&uiente eti!ueta (no as en C, en el !ue laseti!uetas del case act*an como eti!uetas de un B= en ensamblador:una "e !ue entran en una eti!ueta, no salen del case hasta !ue 9ste

    acaba completamente)'

    >as eti!uetas pueden ser cual!uier MMe%presi#n re&ularNN (e%presi#n concomodines tpica de los int9rpretes de #rdenesL no las e%presionesre&ulares del "i, el &rep, el perl otros) "8lida, con lo !ue se puede poner

    un como *ltima eti!ueta del case para actuar como else' =ara indicar!ue termina el c#di&o de una eti!ueta determinada, ha !ue poner al finalde la *ltima orden dos si&nos de punto coma se&uidos'

  • 7/23/2019 shell-II

    20/25

    IST ABACO

    SINTA"IS CASE

    ca&$6a%or in $;pr$0(7

    u%timaor+$n(55 $;pr$0)7 u%timaor+$n)55

    $;pr$0n7 u%timaor+$nn55

    $&ac

  • 7/23/2019 shell-II

    21/25

    IST ABACO

    SINTA"IS CASE

    EE9PLO (:

    $c#o >$&co0$ una num$ro $ntr$ $% ( a :>r$a+ r$&pca&$ 3r$&p in (7 $c#o >Er$& p$ruano>55 )7 $c#o >T$ 0u&ta $% c$6ic#$>55 T$ 0u&ta $&tu+iar>55

    Q7 $c#o >Nin0una +$ %a& Ant$rior$&>55 $&ac

  • 7/23/2019 shell-II

    22/25

    IST ABACO

    SINTA"IS CASE

    EE9PLO ((:

    HOY,3+at$ J*7AYER,323HOY !(4$c#o >ay$r fu$:>ca&$ 3AYER in !(7 $c#o >&a.a+o>55 7 $c#o >+omin0o>55 (7 $c#o >%un$&>55 )7 $c#o >mart$&>55

    mi$rco%$&>55 7 $c#o >'u$6$&>55 7 $c#o >6i$rn$&>55 Q7 $c#o >ERROR: 3AYER no $;i&t$>55 $&ac

  • 7/23/2019 shell-II

    23/25

    IST ABACO

    UNCIONES

    Tan pronto como ten&amos un pro&rama m8s complejo nosencontraremos con !ue estamos usando el mismo c#di&o en "arias

    partes !ue sera de m8s auda el darle cierta estructura'

    Con esto, podemos reducir nuestro script a la menor cantidad de lineasposibles'

  • 7/23/2019 shell-II

    24/25

    IST ABACO

    UNCIONES

    nom.r$+$%afuncion7P

    Q dentro del cuerpo 0 es el primer ar&umento dado a la funci#nQ R el se&undo '''

    cu$rpoS

    SINTA"IS

  • 7/23/2019 shell-II

    25/25

    EE9PLO%$t A,(%$t B,)

    uncion &uma7 Suma %o& 6aria.%$& A y Bfunction &uma7?%$t C,3AJ3B$c#o >Suma: 3C>

    @

    uncion r$&ta7 R$&ta %o& 6aria.%$& A y Bfunction r$&ta7?

    %$t C,3A!3B$c#o >R$&ta: 3C>

    @&uma

    r$&ta