shell-ii
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