Anda di halaman 1dari 4

EjerciciosdeShellScript

01Bsicos
1.Realizarunscriptllamado'01holamundo.sh'quemuestreporpantalla"Hola
mundo!".
2.demperoqueenvezde"mundo"muestrelosparmetrosintroducidos('02hola
parametros.sh').
3.demyqueademsverifiquequealmenoshayamosintroducidounparmetro
('03holaalmenos1parametro.sh').
4.demyqueademsseparecadaargumentopor","('04holaparametros
separados.sh').
5.demyqueademsencasodeerrormuestraunaayuda('05holaconayuda.sh').
6.demyqueademsverifiquequeseanusuariosconectadosalsistema('06hola
usuario.sh').
7.Realizarunscriptllamado'usuarioconectado'queretornaunSIsielprimer
parmetrocoincideconalgnusuarioconectadooNOencasocontrario.
8.Modificarelfichero'.bashrc'paramodificarelPATHyaadirlacarpetade
estosejercicios.Paraelloaadelasiguientelinea:export
PATH=$PATH":~/ruta_carpeta_ejercicios"
9.Modificarelscript'06holausuario.sh'paraquellamea'usuarioconectado'
('09holausuario.sh').
10.Realizarunscriptllamado'usuariosistema'queretornaunSIsielprimer
parmetrocoincideconalgnusuariodelsistemaoNOencasocontrario.
11.Modificarelscript'09holausuario.sh'paraquellamea'usuariosistema'
('11holausuario.sh').
02Calculadora
12.Realizarunscriptllamado'suma'querealicelasumade2parmetros
introducidos(tendrquepodersumarnmerosdecimales,como2.2+3).
13.Realizarunscriptllamado'resta'querealicelarestade2parmetros
introducidos(tendrquepodersumarnmerosdecimales,como2.23).
14.Realizarunscriptllamado'multiplica'quemultipliquelos2parmetros
introducidos(tendrquepodermultiplicarnmerosdecimales,como2.2*3).
15.Realizarunscriptllamado'division'querealiceladivisinde2parmetros
introducidos(tendrquepodersumarnmerosdecimales,como2.2/3).
16.Realizarunscriptllamado'calc01.sh'querealiceoperacionesbsicasentre
2nmerosllamandoacadaunodelosscriptsanteriormentecreados(suma,
resta,multiplicacinydivisin).
17.demperosinllamaralosscripts('calc02.sh').
18.Realizarunscriptllamado'calc03.sh'quecalculeelvalorunaexpresin
numricapasadaporparmetro.

Autor:AdolfoSanzDeDiego(asanzdiegoBlog|GitHub|LinkedIn|SlideShare|Twitter)Licencia:CCBYSA

19.Realizaramanounfichero'notas.csv'conlossiguientesdatos:
Pepito3.14.45.7
Fulanito4.26.58.8
Menganito5.35.65.0

20.Realizarunfichero'notas.awk'ysucorrespondienteinterfaz'notas.sh'para
quealfinalobtengamosalgoparecidoaesto:
++++
|NOMBREEX1EX2EX3|MED|APTO|
++++
|Pepito3.14.45.7|4.4|NO|
|Fulanito4.26.58.8|6.5|SI|
|Menganito5.35.65.0|5.3|SI|
++++
|TOTAL4.25.56.5|5.4|2|
++++

03Banco
21.Realizarunscriptllamado'banco'paraaadir,buscarylistarmovimientos
bancarios,ycalcularelsaldodelacuenta.
22.Realizarunscriptllamado'bancomenu.sh'quesirvadeinterfazdel
anterior.
23.Realizarunscriptllamado'bancoflags.sh'parapoderusarelscript'banco'
medianteCLI.
04Demonios
24.Realizarundemoniollamado'alerta'queescribalafechacadaXsegundosen
unlogllamado'~/alerta.log'.
25.Realizarlasinterfacesdeldemonio'alerta'conlasopcionesbsicas:start,
stop,restartystatus('servicioalerta.sh').
05Copias
26.Realizarunscriptllamado'copiatotal'queempaqueteycomprimael
contenidodelacarpeta'~/carpeta_a_copiar'enunficherollamado'total
aaaa.mm.ddHH.MM.SS.tar.zip'enlacarpeta'~/copia_seguridad'.
27.Realizarunscriptllamado'copiadiferencial'queempaqueteycomprimalos
ficherosdelacarpeta'~/carpeta_a_copiar'modificadosdesdelaltimacopia
total(sinoexistecopiatotalnohacernada)enunficherollamado
'diferencialaaaa.mm.ddHH.MM.SS.tar.zip'enlacarpeta'~/copia_seguridad'.
28.Realizarunscriptllamado'copiaincremental'queempaqueteycomprimalos
ficherosdelacarpeta'~/carpeta_a_copiar'modificadosdesdelaltimacopia
incremental(sinoexistecopiaincremental,desdelaltimacopiatotal,ysi
noexistecopiatotalnohacernada)enunficherollamado'incremental
aaaa.mm.ddHH.MM.SS.tar.zip'enlacarpeta'~/copia_seguridad'.
29.Modificarelfichero'miCrontab'paraqueimprimalafechaenelfichero
'~/ultimocrontab.txt'cadaminuto,yejecutarloconcrontab.

Autor:AdolfoSanzDeDiego(asanzdiegoBlog|GitHub|LinkedIn|SlideShare|Twitter)Licencia:CCBYSA

06Varios
30.Crearunscriptllamado'array.sh'quedeclareunarray,lorellenecondatos
yluegoiteresobreelmismoparamostrarlosdatos.
31.Realizaramanounfichero'roles.csv'conlossiguientesdatos:
Pepito:Jefe,Sistemas
Fulanito:Jefe,Desarrollo
Menganito:Operario,Sistemas,Desarrollo

32.Realizarunscript'rolessinawk.sh',que,sinutilizarawk,alfinal
obtengamosalgoparecidoaesto:
Desarrollo
>FulanitoMenganito
Operario
>Menganito
Sistemas
>PepitoMenganito
Jefe
>PepitoFulanito

33.Realizarunfichero'roles.awk'ysucorrespondienteinterfaz'rolescon
awk.sh'paraquealfinalobtengamoslomismoqueelejercicioanterior.
34.Realizarunscriptllamado'ordena'quelisteelcontenidodeldirectorio
actualordenadoportamaodelarchivodemenoramayor.Ellistadoslo
mostrarelnombredelosarchivosyelnmerodelneacorrespondiente.Enel
casodequeseintroduzcaalgnparmetrosemostrarelsiguientemensajede
error:Nosepermitenparmetros.yretornaruncdigoderetornoiguala
1.
35.Realizarunscriptllamado'jaula'quecree,slosinoexiste,eldirectorio
.jaulaenla$HOMEdelusuarioymuevalosficherospasadosporparmetroa
dichodirectorio.Enelcasodequenoselepaseningnparmetrose
mostrarelsiguientemensajedeerror:Hayqueintroduciralmenosun
parmetro.yretornaruncdigoderetornoiguala1.Enelcasodeque
algnficherointroducidoporparmetronoexistasemostrarelsiguiente
mensajedeerror:Elfichero'$FICHERO'noexiste.yretornaruncdigode
retornoiguala2.Sielfichero.jaulaexisteenla$HOMEdelusuariopero
noesundirectoriomostrarelsiguientemensajedeerror:Elfichero
'$HOME/.jaula'noesundirectorio.yretornaruncdigoderetornoiguala
3.
36.Realizarunscriptllamado'calendario'alquesipasamoselparmetroco
elparmetrocortamostrarlafechadehoyconelformato$DIA/$MES/$AO
ysilepasamoselparmetrololargamostrarlafechadehoyconel
formatoHoyeselda'$DIA'delmes'$MES'delao'$AO'..Enelcasode
quenoseintroduzcaningnparmetrosemostrarelcalendariodelmes
actual.Enelcasodequeelnmerodeparmetrosintroducidosseadistintode
1semostrarelsiguientemensajedeerror:Sloseadmiteunparmetro.y
retornaruncdigoderetornoiguala1.Sipasamosotracosaquenoseac,
corta,lolargamostrarelsiguientemensajedeerror:Opcin
incorrecta.yretornaruncdigoderetornoiguala2.
37.Realizarunscriptllamado'elevado'quecalculea^b,oseaaelevadoab,
dondeaserelprimerparmetroybelsegundoparmetro.Enelcasode
queelnmerodeparmetrosintroducidosseamenorque2semostrarel
siguientemensajedeerror:Paraejecutarestescriptsenecesitan2
nmeros.yretornaruncdigoderetornoiguala2.

Autor:AdolfoSanzDeDiego(asanzdiegoBlog|GitHub|LinkedIn|SlideShare|Twitter)Licencia:CCBYSA

38.Realizarunscriptllamado'citas'enelquesepuedanutilizarlas
siguientesopciones:
hhelpParamostraruntextodeayuda.
aaddParaaadirunacitaconHORA_INICIO,HORA_FINAL,yNOMBRE_PACIENTE.
ssearchParabuscarlospacientesquecontenganPATRN.
iinitParabuscarlascitasqueempiecenaHORA_INICIO.
eendParabuscarlascitasqueterminenaHORA_FINAL.
nnameParalistartodaslascitasordenadasporNOMBRE_PACIENTE.
ohourParalistartodaslascitasordenadasporHORA_INICIO.
Paracadaunadelasopcionessecomprobarqueseintroducenelnmerodeparmetros
correctosyconelformatocorrecto.
HORA_INCIOyHORA_FINALsernnmerosenteroscomprendidosentre00y23.
Alintroducirunacitanuevasecomprobarquenosesolapeconotrayaintroducida.
Secomprobartambinquenoserepitaningnnombredepaciente.

39.Realizarunscriptllamado'citasmenu.sh'queseaunainterfazdelscript
'citas'motrandounmenconlassiguientesopciones:
1.Aadircitanueva.
2.Buscarpornombredelpaciente.
3.Buscarcitasporhorainicial.
4.Buscarcitasporhorafinal.
5.Listarlascitasordenadaspornombredelpaciente.
6.Listarlascitasordenadasporhorainicial.
7.Salirdelprograma.

40.Realizarunscriptllamado'citasflags.sh'parapoderusarelscript'citas'
medianteCLI.
07Bonus
41.Veryentenderlosscriptsdehttps://github.com/asanzdiego/markdownslides,
enparticular:
1. https://github.com/asanzdiego/markdownslides/blob/master/build.sh
2. https://github.com/asanzdiego/markdownslides/blob/master/gitpush.sh
3. https://github.com/asanzdiego/markdownslides/blob/master/gitpages.sh
42.Veryentenderlosscriptsdehttp://asanzdiego.blogspot.com.es/2014/09/el
makingofdelmapadelaevoluciondelno2enMadriddelhack4good.html,en
particular:
1. https://github.com/asanzdiego/mapaevolucioncontaminacionaire
madrid/blob/master/estacionesmadridtoarray.sh
2. https://github.com/asanzdiego/mapaevolucioncontaminacionaire
madrid/blob/master/parsea.sh
3. https://github.com/asanzdiego/mapaevolucioncontaminacionaire
madrid/blob/master/filtra.sh
4. https://github.com/asanzdiego/mapaevolucioncontaminacionaire
madrid/blob/master/categorizano2.sh

Autor:AdolfoSanzDeDiego(asanzdiegoBlog|GitHub|LinkedIn|SlideShare|Twitter)Licencia:CCBYSA