Upload
manuel
View
237
Download
0
Embed Size (px)
Citation preview
8/16/2019 Scripts en linux 01.pdf
1/66
Scripts en linuxScripts en linux
Implantación de sistemas operativos.Implantación 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/16/2019 Scripts en linux 01.pdf
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 difícil el tema
c"mod a#$ ~scriptsprimer!script.s"~scriptsprimer!script.s"cd ~scripts
.primer!script.s"
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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"
Expansión de comandosExpansión de comandos
8/16/2019 Scripts en linux 01.pdf
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"
Expansión de comandosExpansión de comandos
8/16/2019 Scripts en linux 01.pdf
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"
Expansión de comandosExpansión de comandos
8/16/2019 Scripts en linux 01.pdf
8/66
cd ~scriptsnano tercer!script!(.s"
#!/bin/bashL3-42+ ls %&sh ' (c )l "
L3-42“*enemos +L3-4 scripts” echo +L3-4
c"mod a#$ tercer!script!(.s".tercer!script!(.s"
Expansión de comandosExpansión de comandos
8/16/2019 Scripts en linux 01.pdf
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"
Expansión aritméticaExpansión aritmética
8/16/2019 Scripts en linux 01.pdf
10/66
nano c%arto!script.s"
#!/bin/bashclear echo “Dime un n5mero “
read -.M01D16L2+8 +-.M01 % 7 9echo Has introducido +-.M01 $ su doble es
Expansión aritméticaExpansión aritmética
8/16/2019 Scripts en linux 01.pdf
11/66
nano )%into!script.s"
#!/bin/bash:.-*4;6402-*2?
:4D4;.-12+8 +:.-*4;640 / +>-* 9# Línea de comentario# ste script no funciona bienecho :ada uno debemos pa@ar +:4D4;.-1
Expansión aritméticaExpansión aritmética
8/16/2019 Scripts en linux 01.pdf
12/66
se$to!script.s"
*+,in,as"-E/0A1223E/0E'
* 4acemos la división con dos decimales-ADA!/567 ec"o 8scale&9 6-E/0A 63E/0ec"o -ada %no de,emos pagar 6-ADA!/5 e%ro
Expansión aritmética. bcExpansión aritmética. bc
8/16/2019 Scripts en linux 01.pdf
13/66
cd ~scripts 9 mkdir fic"erosnano fic"erosnom,res.t$t
-ombre/4pellidos/dad/-um;:ompras/3mporte;AacManuel/Buintanilla Auentes/C7/
8/16/2019 Scripts en linux 01.pdf
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 JancheK Guan 1rte@a 6ellidoManuel Buintanilla Auentesir@inia Machado Lorca
Script secuencialScript secuencial
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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 división 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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
19/66
nano sal%do.s"
*!/bin/bashfunction saludo
echo Hola Mundo
Necho o$ a saludar saludoecho Oa he saludado
Funciones en un script.Funciones en un script.
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
21/66
E>ercicio? -rear %n script con nom,re longit%d.s" pida por pantalla %na pala,ra @ de,e indicarnos contin%ación 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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
23/66
Estr%ct%ra condicional IL 7sN ... entonces "az ...=
if condición T9 t"enFlo)%e a realizar si condición se c%mple
fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
24/66
Estr%ct%ra condicional IL 7sN=
if condición T9 t"enFlo)%e a realizar si condición se c%mple
fi
E>emplo?
if 8 +-1M60 2 Rose 9S thenecho Hola Gose
fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
25/66
ali,a,a.s"
*!/bin/bashread p “Dime la palabra secreta “ 4L4604if 8 +4L4604 2 abracadabra 9S then
echo Mu$ bien, puedes pasar fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
26/66
Estr%ct%ra IL EBSE 7sN .. en caso contrario ..=
if condición T9 t"enFlo)%e a realizar si condición se c%mple
else
Flo)%e a realizar si condición no se c%mple fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
27/66
ali,a,a!&.s"
*!/bin/bashread p “Dime la palabra secreta “ 4L4604if 8 +4L4604 2 abracadabra 9S then
echo Mu$ bien, puedes pasar else
echo sa no es la palabra secreta, fuerafi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
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 +4L460 A=abracadabra 9S then
echo Mu$ bien, puedes pasar else
echo sa no es, fuera
fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
29/66
Cadena1 = Cadena2 Verdadero si son iguales
Cadena1 != Cadena2 Verdadero si NO son iguales
Cadena1 Cadena2 Verdadero si C1 mayor que C2 (no u
-n Variable Verdadero si Variable NO es nulo (v
-z Variable Verdadero si Variable es nulo (vacío
Operadores de comparación de caOperadores de comparación de ca
8/16/2019 Scripts en linux 01.pdf
30/66
Numero1 -eq Numero2 Verdadero si son iguales (equal)
Numero1 -ne Numero2 Verdadero si NO son iguales (not eq
Numero1 -lt Numero2 Verdadero si N1 menor que N2 (less
Numero1 -gt Numero2 Verdadero si N1 mayor que N2 (grea
Numero1 -le Numero2Verdadero si N1 es menor o igual quor equal)
Numero1 -ge Numero2Verdadero si N1 es mayor o igual qu
(greater or equal)
Operadores de comparación numOperadores de comparación numé
8/16/2019 Scripts en linux 01.pdf
31/66
ma@or!edad.s"
*!/bin/bashread p “Dime tu edad “ D4Dif 8 +D4D @e
8/16/2019 Scripts en linux 01.pdf
32/66
menor!edad.s"
*!/bin/bashread p “Dime tu edad “ D4Dif 8 +D4D lt
8/16/2019 Scripts en linux 01.pdf
33/66
compro,ar!edad.s"
*!/bin/bashread p “Dime tu edad “ D4Dif 8 +D4D lt
8/16/2019 Scripts en linux 01.pdf
34/66
Estr%ct%ra IL EBIL EBSE 7sN .. en caso contrario
if condición 1 T9 t"enFlo)%e a realizar si condición 1 se c%mple
elif condición & T9 t"en
Flo)%e a realizar si condición 1 no se c%mplepero condición & si se c%mple
elseFlo)%e a realizar si ning%na condición se c%m
fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
35/66
compro,ar!edad.s"
*!/bin/bashread p “Dime tu edad “ D4Dif 8 +D4D lt
8/16/2019 Scripts en linux 01.pdf
36/66
-a ichero Verdadero si ichero e!iste
-d ichero Verdadero si ichero e!iste y es un directorio
-f ichero Verdadero si ichero e!iste y es un ichero r
-r ichero Verdadero si ichero e!iste y se "uede leer
-w ichero Verdadero si ichero e!iste y se "uede escri
-x ichero Verdadero si ichero e!iste y se "uede e#ecu
ichero1 -nt ichero2 Verdadero si ichero1 es mas nuevo que ic
ichero1 -ot ichero2 Verdadero si ichero1 es mas antiguo que i
Operadores test.Operadores test.
8/16/2019 Scripts en linux 01.pdf
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%ación 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/16/2019 Scripts en linux 01.pdf
38/66
odemos com,inar condiciones %sando 7W=
if condición 1 T condición & T9 t"enFlo)%e a realizar si se c%mple tanto condiciócomo condición &
fi
if 6EDAD Gge 1X T 6EDAD Glt X2T9 t"enec"o %ede pasar
fi
Estructuras condicionalesEstructuras condicionales
8/16/2019 Scripts en linux 01.pdf
39/66
odemos com,inar condiciones %sando ;; 75=
if condición 1 T ;; condición & T9 t"enFlo)%e a realizar si se c%mple condición 1 Ose c%mple condición & 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/16/2019 Scripts en linux 01.pdf
40/66
odemos com,inar condiciones %sando ;; 75=
if condición 1 T ;; condición & T9 t"enFlo)%e a realizar si se c%mple condición 1 Ose c%mple condición & 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/16/2019 Scripts en linux 01.pdf
41/66
odemos negar condiciones %sando + 7not=
If + condición 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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
43/66
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
47/66
f or 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/16/2019 Scripts en linux 01.pdf
48/66
Estr%ct%ra iterativa ["ile 7mientras condición "az
["ile condición T9 doFlo)%e a realizar IE/0CAS la condición se c
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
8/16/2019 Scripts en linux 01.pdf
49/66
Estr%ct%ra iterativa %ntil 7"asta condición "az ...=
%ntil condición T9 doFlo)%e a realizar 4AS0A )%e la condición se
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
8/16/2019 Scripts en linux 01.pdf
50/66
/1["ile / Gle 12 T9 do
ec"o 6//6 6/ # 1 T
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
52/66
/1%ntil / Ggt 12 T9 do
ec"o 6//6 6/ # 1 T
done
Estructuras iterativas. (buclEstructuras iterativas. (bucl
(
8/16/2019 Scripts en linux 01.pdf
53/66
/1%ntil / Ggt 12 T9 do
ec"o 6//6 6/ # 1 T
done
1 & ' ( O P Q X Y 12
Estructuras iterativas. (buclEstructuras iterativas. (bucl
á
8/16/2019 Scripts en linux 01.pdf
54/66
Se le p%eden pasar parKmetros a %n script a la "oinvocarlo.
&/mipro@rama&sh
8/16/2019 Scripts en linux 01.pdf
55/66
$1 %evuelve el "ar&metro n'mero 1
$2 %evuelve el "ar&metro n'mero 2
$n %evuelve el "ar&metro n'mero n (no "uede ser mayor d
$ %evuelve el "ar&metro cero. (*sto es+ el nombre del scr
$, %evuelve el n'mero de "ar&metros que se han "asado.
$ %evuelve todos los "ar&metros "asados+ uno detr&s de
Paso de parámetrosPaso de parámetros
Vl d l l d
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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 división 7mód%lo=.ec"o 6/EC5
Variable RANDOMVariable RANDOM
C b l iC b l i
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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 vacíComprobar un valor vací
C b l íC b l í
8/16/2019 Scripts en linux 01.pdf
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 vacíComprobar un valor vací
8/16/2019 Scripts en linux 01.pdf
62/66
C b l íC b l í
8/16/2019 Scripts en linux 01.pdf
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 vacíComprobar un valor vací
V iblIFSVariableIFS
8/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
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/16/2019 Scripts en linux 01.pdf
66/66
Scripts en linuxScripts en linux
LI/LI/Implantación de sistemas operativos.Implantación 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.