Download - Scripts en Linux 01
-
8/12/2019 Scripts en Linux 01
1/66
Scripts en linuxScripts en linux
Implantacin de sistemas operativos.Implantacin de sistemas operativos.1 asir.1 asir.
I.E.S. francisco romero Vargas.I.E.S. francisco romero Vargas.Jose Antonio carrasco Diaz.Jose Antonio carrasco Diaz.
-
8/12/2019 Scripts en Linux 01
2/66
Nuestro primer scriptNuestro primer script
mkdir ~scriptsnano ~scriptsprimer!script.s"
#!/bin/bashecho Hola Mundo, mi primer script en Linu
echo De momento no parece difcil el tema
c"mod a#$ ~scriptsprimer!script.s"~scriptsprimer!script.s"cd ~scripts
.primer!script.s"
-
8/12/2019 Scripts en Linux 01
3/66
cd ~scriptsnano seg%ndo!script.s"
#!/bin/bashecho o$ a contar cuantos scripts tenemos
ls %&sh ' (c )l
so%rce seg%ndo!script.s". seg%ndo!script.s"
Usando sourceUsando source
-
8/12/2019 Scripts en Linux 01
4/66
cd ~scriptsnano seg%ndo!script.s"
#!/bin/bashecho o$ a contar cuantos scripts tenemos
ls %&sh ' (c )l
so%rce seg%ndo!script.s". seg%ndo!script.s"
Usando sourceUsando source
-
8/12/2019 Scripts en Linux 01
5/66
cd ~scriptsnano tercer!script!1.s"
#!/bin/bashecho *enemos + ls %&sh ' (c )l " scripts
c"mod a#$ tercer!script!1.s".tercer!script!1.s"
Expansin de comandosExpansin de comandos
-
8/12/2019 Scripts en Linux 01
6/66
cd ~scriptsnano tercer!script!&.s"
#!/bin/bashecho )n *enemos
echo )n + ls %&sh ' (c )l "echo scripts
c"mod a#$ tercer!script!&.s".tercer!script!&.s"
Expansin de comandosExpansin de comandos
-
8/12/2019 Scripts en Linux 01
7/66
cd ~scriptsnano tercer!script!'.s"
#!/bin/bash
-.M012+ ls %&sh ' (c )l "echo *enemos +-.M01 scripts
c"mod a#$ tercer!script!'.s".tercer!script!'.s"
Expansin de comandosExpansin de comandos
-
8/12/2019 Scripts en Linux 01
8/66
cd ~scriptsnano tercer!script!(.s"
#!/bin/bashL3-42+ ls %&sh ' (c )l "
L3-42*enemos +L3-4 scriptsecho +L3-4
c"mod a#$ tercer!script!(.s".tercer!script!(.s"
Expansin de comandosExpansin de comandos
-
8/12/2019 Scripts en Linux 01
9/66
cd ~scriptsnano c%arto!script.s"
#!/bin/bashecho Dime un n5mero
read -.M01D16L2+ +-.M01 % 7 ""echo Has introducido +-.M01 $ su doble es
c"mod a#$ c%arto!script.s"
.c%arto!script.s"
Expansin aritmticaExpansin aritmtica
-
8/12/2019 Scripts en Linux 01
10/66
nano c%arto!script.s"
#!/bin/bashclearecho Dime un n5mero
read -.M01D16L2+8 +-.M01 % 7 9echo Has introducido +-.M01 $ su doble es
Expansin aritmticaExpansin aritmtica
-
8/12/2019 Scripts en Linux 01
11/66
nano )%into!script.s"
#!/bin/bash:.-*4;6402-*2?
:4D4;.-12+8 +:.-*4;640 / +>-* 9# Lnea de comentario# ste script no funciona bienecho :ada uno debemos pa@ar +:4D4;.-1
Expansin aritmticaExpansin aritmtica
-
8/12/2019 Scripts en Linux 01
12/66
-
8/12/2019 Scripts en Linux 01
13/66
cd ~scripts 9 mkdir fic"erosnano fic"erosnom,res.t$t
-ombre/4pellidos/dad/-um;:ompras/3mporte;AacManuel/Buintanilla Auentes/C7/
-
8/12/2019 Scripts en Linux 01
14/66
E>ercicio? -rear %n script llamado lista!clientes.s" )procese el fic"ero nom,res.t$t @ nos m%estre por psig%iente?
L3J*4D1 D :L3-*J 10D-4D1J 10 -1M
4na 6ienenido JancheKGuan 1rte@a 6ellidoManuel Buintanilla Auentesir@inia Machado Lorca
Script secuencialScript secuencial
-
8/12/2019 Scripts en Linux 01
15/66
lista!clientes.s"
*+,in,as"clearec"o BIS0AD5 DE -BIE/0ES 5CDE/AD5S 5C /5
ec"o GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGcat fic"erosnom,res.t$t ; sed Ge 1d H fic"erostemcat fic"erostemporal.t$t ; c%t Gd Gf1& ; sed Ge srm fic"erostemporal.t$t
Script secuencialScript secuencial
-
8/12/2019 Scripts en Linux 01
16/66
E>ercicio? -rear %n script llamado saldo.s" )%e mepantalla %n nom,re de cliente 7solo el nom,re= @ m%estre c%al es s% media fact%rada. 7Ba media seImporte Lact%rado dividido entre el /Mmero de -o
D@ame el nombre de un cliente ir@iniaLa media facturada es de ??
-
8/12/2019 Scripts en Linux 01
17/66
pasos para crear saldo.s".1=Bimpiar la pantalla&=edir )%e nos introd%zca el %s%ario %n nom,re mediante re'=F%scar la lNnea del fic"ero )%e tiene ese nom,re @ g%ardar
en %n fic"ero temporal(=-ortar de ese fic"ero temporal el Importe 0otal Lact%rado @
%na varia,leO=-ortar de ese fic"ero temporal el /%mero de compras @ g%a
otra varia,leP=Dividir la varia,le del Importe 0otal Lact%rado entre la varia
/%mero de compras 7esa divisin de,e "acerse con dos decg%ardar el res%ltado en %na varia,le.
Q=ostrar por pantalla dic"a varia,le.
Script secuencialScript secuencial
-
8/12/2019 Scripts en Linux 01
18/66
*+,in,as"*saldo.s" Script )%e procesa fic"erosnom,res.t$tclearread Gp 8DNgame el nom,re de %n cliente ? 8 /5FCEcat fic"erosnom,res.t$t ; grep R6/5FCE H fic"erostem
050AB67 cat fic"erostemporal.t$t ; c%t Gd GfO =/-5CAS67 cat fic"erostemporal.t$t ; c%t Gd Gf( =EDIA67ec"o scale&9 6050AB 6-5CAS ; ,c Gl=ec"o Ba media fact%rada es de 6EDIA e%ros.rm fic"erostemporal.t$t
Script secuencialScript secuencial
-
8/12/2019 Scripts en Linux 01
19/66
nano sal%do.s"
*!/bin/bashfunction saludo
echo Hola Mundo
Necho o$ a saludarsaludoecho Oa he saludado
Funciones en un script.Funciones en un script.
-
8/12/2019 Scripts en Linux 01
20/66
temperat%ra.s"
*!/bin/bashfunction cent;7;fah
echo +8 +>04D1J % E / I P ?7 9
N
read p Dime los @rados centi@rados >04D1JA4H0-2+cent;7;fah"echo so son +A4H0- @rados en la escala Aahrenheit
Funciones en un script.Funciones en un script.
-
8/12/2019 Scripts en Linux 01
21/66
E>ercicio? -rear %n script con nom,re longit%d.s" pida por pantalla %na pala,ra @ de,e indicarnos contin%acin la longit%d de dic"a pala,ra.El script de,e repetir esto ' veces.
*!/bin/bashfunction lon@itud & & & & & &
Nread p Dime una palabra 4L4604
&
Funciones en un script.Funciones en un script.
-
8/12/2019 Scripts en Linux 01
22/66
longit%d.s"#!/bin/bashfunction lon@itud -2+ echo +4L4604 ' (c c " -2+8 +- < 9 echo +-
Nread p QDime una palabra Q 4L4604echo +lon@itud"read p QDime una palabra Q 4L4604echo +lon@itud"read p QDime una palabra Q 4L4604
echo +lon@itud"
Funciones en un script.Funciones en un script.
-
8/12/2019 Scripts en Linux 01
23/66
Estr%ct%ra condicional IL 7sN ... entonces "az ...=
if condicin T9 t"enFlo)%e a realizar si condicin se c%mple
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
24/66
-
8/12/2019 Scripts en Linux 01
25/66
ali,a,a.s"
*!/bin/bashread p Dime la palabra secreta 4L4604if 8 +4L4604 2 abracadabra 9S then
echo Mu$ bien, puedes pasarfi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
26/66
Estr%ct%ra IL EBSE 7sN .. en caso contrario ..=
if condicin T9 t"enFlo)%e a realizar si condicin se c%mple
else
Flo)%e a realizar si condicin no se c%mple fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
27/66
ali,a,a!&.s"
*!/bin/bashread p Dime la palabra secreta 4L4604if 8 +4L4604 2 abracadabra 9S then
echo Mu$ bien, puedes pasarelse
echo sa no es la palabra secreta, fuerafi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
28/66
cp ali,a,a!&.s" ali,a,a!'.s"nano ali,a,a!'.s"
*!/bin/bash# cuidado con este error Tue es peli@roso
read p Dime la palabra secreta 4L4604if 8 +4L460A=abracadabra 9S then
echo Mu$ bien, puedes pasarelse
echo sa no es, fuera
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
29/66
-
8/12/2019 Scripts en Linux 01
30/66
Numero1 -eqNumero2 Verdadero si son iguales (equal)
Numero1 -neNumero2 Verdadero si NO son iguales (not eq
Numero1 -lt Numero2 Verdadero si N1 menor que N2 (less
Numero1-gtNumero2 Verdadero si N1 mayor que N2 (grea
Numero1-leNumero2Verdadero si N1 es menor o igual quor equal)
Numero1 -geNumero2Verdadero si N1 es mayor o igual qu
(greater or equal)
Operadores de comparacin numOperadores de comparacin num
-
8/12/2019 Scripts en Linux 01
31/66
ma@or!edad.s"
*!/bin/bashread p Dime tu edad D4Dif 8 +D4D @e
-
8/12/2019 Scripts en Linux 01
32/66
-
8/12/2019 Scripts en Linux 01
33/66
compro,ar!edad.s"
*!/bin/bashread p Dime tu edad D4Dif 8 +D4D lt
-
8/12/2019 Scripts en Linux 01
34/66
Estr%ct%ra IL EBIL EBSE 7sN .. en caso contrario
if condicin 1 T9 t"enFlo)%e a realizar si condicin 1 se c%mple
elif condicin & T9 t"en
Flo)%e a realizar si condicin 1 no se c%mplepero condicin & si se c%mple
elseFlo)%e a realizar si ning%na condicin se c%m
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
35/66
compro,ar!edad.s"
*!/bin/bashread p Dime tu edad D4Dif 8 +D4D lt
-
8/12/2019 Scripts en Linux 01
36/66
-aichero Verdadero si ichero e!iste
-dichero Verdadero si ichero e!iste y es un directorio
-fichero Verdadero si ichero e!iste y es un ichero r
-richero Verdadero si ichero e!iste y se "uede leer
-wichero Verdadero si ichero e!iste y se "uede escri
-xichero Verdadero si ichero e!iste y se "uede e#ecu
ichero1 -ntichero2 Verdadero si ichero1 es mas nuevo que ic
ichero1 -otichero2 Verdadero si ichero1 es mas antiguo que i
Operadores test.Operadores test.
-
8/12/2019 Scripts en Linux 01
37/66
E>ercicio? -rear %n script con nom,re cs.s" )%e nos va@%dar a crear scripts. -%ando se e>ec%te nos pedirK pantalla %n nom,re de script @ a contin%acin compe$iste %n fic"ero o directorio creado en el directorio acon ese mismo nom,re. Si es asN avisarK del error.Si no e$iste nada con ese nom,re crearK %n fic"ero c
nom,re lo "arK e>ec%ta,le @ le aUadirK como primer *+,in,as" @ como seg%nda lNnea la sig%iente?
* script nom,re generado el &22O&21(.
Script con estructura alternaScript con estructura alterna
-
8/12/2019 Scripts en Linux 01
38/66
odemos com,inar condiciones %sando 7W=
if condicin 1 T condicin & T9 t"enFlo)%e a realizar si se c%mple tantocondicicomo condicin &
fi
if 6EDAD Gge 1X T 6EDAD Glt X2T9 t"enec"o %ede pasar
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
39/66
odemos com,inar condiciones %sando ;; 75=
if condicin 1 T ;; condicin & T9 t"enFlo)%e a realizar si se c%mple condicin 1 Ose c%mple condicin & 7con )%e se c%mpla 1
fi
if 6EDAD Glt 1X T ;; 6EDAD Gge X2T9 t"enec"o /o tienes edad para pasar
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
40/66
odemos com,inar condiciones %sando ;; 75=
if condicin 1 T ;; condicin & T9 t"enFlo)%e a realizar si se c%mple condicin 1 Ose c%mple condicin & 7con )%e se c%mpla 1
fi
if 6EDAD Glt 1X T ;; 6EDAD Gge X2T9 t"enec"o /o tienes edad para pasar
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
41/66
odemos negar condiciones %sando + 7not=
If + condicin 1 T9 t"enFlo)%e a realizar si /5 se c%mple cond
fi
If + 6EDAD Gge 1X T9 t"enec"o /o tienes edad para pasar
fi
Estructuras condicionalesEstructuras condicionales
-
8/12/2019 Scripts en Linux 01
42/66
Estr%ct%ra iterativa L5C 7por cada elemento "a
for VACIAFBE in -5/J/059 doFlo)%e a realizar por cada elemento de con>
varia,le va tomando los valores de cada ele done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
43/66
Estr%ct%ra iterativa L5C 7por cada elemento "a
-5/J/05 es c%al)%ier com,inacin de valoreseparados por espacios en ,lanco o ,ien por re
de lNnea.
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
44/66
for VAB5C in 1( XQ YP perro gato9 doec"o VAB5C vale 6VAB5C
done
VAB5C vale 1(VAB5C vale XQVAB5C vale YPVAB5C vale perroVAB5C vale gato
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
45/66
for VAB5C in 6-5/J/059 doec"o VAB5C vale 6VAB5C
done
ro,ar )%e res%ltados salen con los sig%ientecon>%ntos?
-5/J/05:2 1 & ' ( O P Q X Y:-5/J/0567ls Z.s"=
-5/J/0567cat fic"erosnom,res t$t=
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
46/66
for VAB5C in 6-5/J/059 doec"o VAB5C vale 6VAB5C
done
ro,ar )%e res%ltados salen con los sig%ientecon>%ntos?
-5/J/05:2 1 & ' ( O P Q X Y:-5/J/0567ls Z.s"=
-5/J/0567cat fic"erosnom,res t$t=
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
47/66
for VAB5C in 67se) &2=9 doec"o VAB5C vale 6VAB5C
done
for VAB5C in 67se) O 1O=9 do
ec"o VAB5C vale 6VAB5Cdone
for VAB5C in 67se) 1 & &2=9 doec"o VAB5C vale 6VAB5C
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
48/66
Estr%ct%ra iterativa ["ile 7mientras condicin "az
["ile condicin T9 doFlo)%e a realizar IE/0CAS la condicin se c
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
49/66
-
8/12/2019 Scripts en Linux 01
50/66
/1["ile / Gle 12 T9 do
ec"o 6//6 6/ # 1 T
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
51/66
/1["ile / Gle 12 T9 do
ec"o 6//6 6/ # 1 T
done
1 & ' ( O P Q X Y 12
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
52/66
/1%ntil / Ggt 12 T9 do
ec"o 6//6 6/ # 1 T
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
-
8/12/2019 Scripts en Linux 01
53/66
-
8/12/2019 Scripts en Linux 01
54/66
Se le p%eden pasar parKmetros a %n script a la "oinvocarlo.
&/mipro@rama&sh
-
8/12/2019 Scripts en Linux 01
55/66
Vl d l l d
-
8/12/2019 Scripts en Linux 01
56/66
E$iste %na varia,le especial 6\
Esta varia,le valdrK 2 si el Mltimo comando e>ec%f%nciono ,ien.
Si el Mltimo comando e>ec%tado dio algMn tipo de esta varia,le no valdrK 2. 7valdrK 1 o & o '.....=
Valores devueltos por las orValores devueltos por las ord
Vl d l l d
-
8/12/2019 Scripts en Linux 01
57/66
*+,in,as"clearread Gp 8Dime %n nom,re de %s%ario ? 8 /5cat etcpass[d ; c%t Gc? Gf1 ; grep Gi 6/5 H de* A"ora preg%ntamos si el %ltimo comando 7grep
if 6\ Ge) 2 T9 t"enec"o 6/5 es %n %s%ario del sistema
elseec"o %s%ario desconocido en este sistema
fi
Valores devueltos por las orValores devueltos por las ord
V RANDOMV iblRANDOM
-
8/12/2019 Scripts en Linux 01
58/66
Ba varia,le 6CA/D5 nos dev%elve %n valoaleatorio entre 2 @ '&QPQ 7por defecto=.
*+,in,as"ec"o vo@ a generar %n nMmero aletario entr
/EC56 6CA/D5 ] P T* ] es %n operador aritm^tico )%e nos dev* resto de %na divisin 7md%lo=.ec"o 6/EC5
Variable RANDOMVariable RANDOM
C b l iC b l i
-
8/12/2019 Scripts en Linux 01
59/66
*+,in,as"read Gp 8Dime %n nom,re de %s%ario ? 8 /5cat etcpass[d ; c%t Gc? Gf1 ; grep Gi 6/5 &H de* A"ora preg%ntamos si el %ltimo comando 7grepif 6\ Ge) 2 T9 t"en
ec"o 6/5 es %n %s%ario del sistemaelse
ec"o %s%ario desconocido en este sistemafi
Comprobar un valor vaciComprobar un valor vaci
C b l C b l
-
8/12/2019 Scripts en Linux 01
60/66
*+,in,as"read Gp 8Dime %n nom,re de %s%ario ? 8 /5if 86/5: 8: T9 t"en
ec"o /o "as escrito nadaelse
Ec"o 4as escrito el nom,re 6/5fi
Comprobar un valor vacComprobar un valor vac
C b l C b l
-
8/12/2019 Scripts en Linux 01
61/66
*+,in,as"BE0CA::["ile 86BE0CA: 8: T9 do
read Gp 8Dime %na letra ? 8 BE0CAdone
ec"o 4as introd%cido la letra 6BE0CA
Comprobar un valor vacComprobar un valor vac
C b l C b l
-
8/12/2019 Scripts en Linux 01
62/66
*+,in,as"BE0CA:_:%ntil 86BE0CA: + 8: T9 do
read Gp 8Dime %na letra ? 8 BE0CAdone
ec"o 4as introd%cido la letra 6BE0CA
Comprobar un valor vacComprobar un valor vac
C b l C b l
-
8/12/2019 Scripts en Linux 01
63/66
*+,in,as"SA2/: 8%ntil 86/: 8: T9 do
read Gp 8Dime %n n%mero ? 8 /
SA 6SA # 6/ Tdoneec"o Ba s%ma es 6SA
Comprobar un valor vacComprobar un valor vac
V iblIFSVariableIFS
-
8/12/2019 Scripts en Linux 01
64/66
Bos con>%ntos del for separan s%s elementos por en ,lanco o por el retorno de lNnea estopro,lemas si tenemos espacios en ,lanco ecampos de %n fic"ero @ )%eremos leer dic"o flNneas.
* Esto no va a f%ncionar como esperamosfor BI/EA in 67cat fic"erosnom,res.t$t=9 do
ec"o Binea del fic"ero? 6BI/EAdone
Variable IFSVariable IFS
V iblIFSVariableIFS
-
8/12/2019 Scripts en Linux 01
65/66
Ba varia,le ILS 7Internal Lield Separator= nocam,iar el limitador del con>%nto. El valor 6`n` dpermite separar solo por retornos de lNnea.
* Esto f%nciona ,ien
ILS6`n`for BI/EA in 67cat fic"erosnom,res.t$t=9 do
ec"o Binea del fic"ero? 6BI/EAdone%nset ILS
Variable IFSVariable IFS
ScriptsenlinuxScriptsenlinux
-
8/12/2019 Scripts en Linux 01
66/66
Scripts en linuxScripts en linux
LI/LI/Implantacin de sistemas operativos.Implantacin de sistemas operativos.1 asir.1 asir.
I.E.S. francisco romero Vargas.I.E.S. francisco romero Vargas.Jose Antonio carrasco Diaz.Jose Antonio carrasco Diaz.