Transcript

1 Implementación de Redes Linux, Guía 4

Tema:ProgramaciónShellBash

Enestaguiaseproporcionaunaintroducciónalacreacióndeprogramasscriptsconelinterpretedecomandosbash,secrearanunaserieprogramasdeejemplosdondesepracticaralasintaxisdevariables,estructurasdecondicionales,estructurasrepetitivas,entreotros.

a) Crearscriptinterpretadosporelshellbash.b) Aprenderlasintaxisdelaprogramacionscriptbash.

a) VirtualBoxb) Ubuntuc) Centos

Un programa shell es un archivo de texto que contiene una serie comandos Linux utilizando lasintaxispropiadeprogramaciondeuninterpretedecomandosdeterminado.Cuandounprogramashellesejecutado,el shell leeelcontenidodelarchivo líneapor líneay laejecutacomosiseestuvieraescribiendocadacomandoenlalíneadecomandos.Nohaynadaquenosepuedaponerenunprogramashellquenosepuedaescribirenlalíneadecomandos.Los programas shell contienen mas estructuras de lo que esperaría en un simple lenguaje deprogramación.Losprogramasscriptpuedenestarestructuradosdelasiguientemanera: a)Variables. b)Estructurasdecontrol(if-else,switch,entreotros). c)Bucles(while,for). d)Funciones. e)Comentarios. f)Entreotrasestructuras.La forma en que estas estructuras son implementados depende del shell en que se esteprogramando.Losprogramasshellsonarchivosdetextoplanoquenonecesitansercompilados(comoprogramasescritosenc/c++,java,entreotroslenguajes,querequierencompilaciónyvinculaciónparaproducirunarchivoejecutable).Elshellinterpretalosprogramasshell,sihayunerror(sintaxisoejecución)sedespliegasurespectivomensajecomosisehubieraescritoenlalíneadecomandos.

Contenido

ObjetivoEspecifico

MaterialyEquipo

IntroduccionTeorica

Facultad:IngenieríaEscuela:ComputaciónAsignatura:ImplementacióndeRedesLinux

2 Sistemas Operativos, Guía 4

Utilizando su editor de texto favorito, digitar el codigode cadaunode los ejemplos siguientes,posteriormenteejecutarcadascriptrespectivodesdelalineadecomandos.Para el informe de desarrollo de la practica, asegurarse que en el indicador del interprete decomandosdelinuxaparezcaelnombredeunodelosintegrantesdelequipodetrabajo.VariablesInternasExplorarlaasignacióndeIRQsdelsistemaconelcomandosiguiente:

Figura 1

Figura2.Salidadelscriptdelafigura1Estructuracondicionalif-else

Figura3

Procedimiento

3 Implementación de Redes Linux, Guía 4

Figura4.Salidadelscriptdelafigura3EstructuraRepetitivaFor

Figura5

4 Sistemas Operativos, Guía 4

Figura6.Salidadelscriptdelafigura5Estructuracondicionalcase

Figura7

5 Implementación de Redes Linux, Guía 4

Figura8.Salidadelscriptdelafigura7Estructurarepetitivawhile

Figura9

Figura10.Salidadelscriptdelafigura9

Estructurarepetitivauntil

Figura11

6 Sistemas Operativos, Guía 4

Figura12.Salidadelscriptdelafigura11

Instrucciónread

Figura13

Figura14.Salidaddelscriptdelafigura13

CrearunmenúparainteractuarconelusuarioArchivomenu.sh#!/bin/bashclearecho“1.Ejemplodemenuuno”echo“2.Ejemplodemenudos”read-n1-p“Introduceunaopcion”opcioncase$opcionin

7 Implementación de Redes Linux, Guía 4

1)exit1;;2)exit2;;*)echo“Nohasintroducidoniundosniununo”;;esacEjecutarelscriptparavalidarOperacionesnuméricas:exprnum1+num2–>Devuelvelasumadenum1+num2exprnum1-num2–>Devuelvelarestadenum1-num2exprnum1*num2–>Devuelveelproductodenum1*num2exprnum1/num2–>Devuelveladivisióndenum1/num2exprnum1>=num2–>Devuelve0(true)sinum1>=num2exprnum1>num2–>Devuelve0(true)sinum1>num2exprnum1<=num2–>Devuelve0(true)sinum1<num2exprnum1<num2–>Devuelve0(true)sinum1<num2exprnum1!=num2–>Devuelve0(true)sinum1esdistintodenum2.ArchivoExprEjemplo.sh#!/bin/bashclearPS3=“IntroduceOpción:”selectopcion“suma”“resta”dobreakdoneread-p“Introducedosnúmeros…”num1num2case$opcioninsuma)echo“Lasumade$num1y$num2es…`expr$num1+$num2`”;;resta)echo“Larestade$num1y$num2es…`expr$num1-$num2`”;;esacProbarelscript.Operacionesconcadenas:.exprlengthcadena–>Nºdecaracteresdeesacadenaexprindexcadena_donde_buscacadena_a_buscar–>Devuelvelaposicióndondeencuentraloscaracteresabuscardentrodelacadena,sino,devuelveun0..ExprEjemplo2.sh#!/bin/bashclear

8 Sistemas Operativos, Guía 4

frase=“Buenosdías,estamosaprendiendoaprogramar”echo“Lalongituddelacadenaes…`exprlength$frase`”read-p“Introducealgunacadenaquebuscar”buscarif[!-z$buscar]thenecho“Loscaracteres$buscarseencuentranenlapos`exprindex$frase$buscar`”fiProbarelscriptExpresionestestEstassonalgunasdelasmáscomunes:Comprobacióndirectorios:-f/ruta/nombre–>Compruebasiesunficheronormal-l/ruta/nombre–>Compruebasiesunenlacesuave-d/ruta/–>Compruebaqueexisteeldirectorio-x/ruta/nombre–>Compruebasiesunejecutable-u/ruta/nombre–>Compruebasitieneactivadoslospermisossuid-g/ruta/nombre–>Compruebasitieneactivadoslospermisossgid-s/ruta/nombre–>compruebaquesutamañoesmayora0Comprobacióndecadenas:“cadena”=“cadena2ʺ–>Compruebasisoniguales-zcadena–>Compruebasiestávacía“cadena”!=“cadena2ʺ–>CompruebaquesondiferentesComprobacióndeexpresionesnuméricas:exp-eqexp2–>Compruebasisonigualesexp-geexp2–>Compruebasiexp>=exp2exp-neexp2–>Compruebasiexpdistintodeexp2exp-gtexp2–>Compruebasiexp>exp2exp-leexp2–>Compruebasiexp<=exp2exp-ltexp2–>Compruebasiexp<exp2Paraconcatenarexpresionesaevaluar:-o=OR-a=AND!=NOTAlgunosejemplosdelusodetest:SCRIPTSENLINUXnumeros.sh#!/bin/bashclearread-d“,”-p“Introducedosnúmerosseparadosporcomas”num1num2if[-z$num1-o-z$num2]thenecho“Debesintroducirdosnúmeros,porfavor”elif[$num1-eq$num2]

9 Implementación de Redes Linux, Guía 4

thenecho“Losnúmerossoniguales”elif[$num1-gt$num2]thenecho“El$num1>que$num2ʺfiBuscaFich.sh#!/bin/bashclearread-p“Introducedirectorioabuscar…”directread-p“Nombredeficheroabuscar…”nombreif[!-d"direct]thenecho“$directnoexiste”elsefind$direct-name“*.$nombre”-execls-l‘{}’\;fiARRAYSLasarraysdelosscriptfuncionandelamismaformaquelosarraysdecualquierlenguajedeprogramación.Unaarrayesunconjuntooagrupacióndevalorescuyoaccesoserealizaporíndices,enunscriptsepuedealmacenarenunmismoarraytodotipodecosas,números,cadenas,caracteres,etc.Enlasarrayselprimerelementoquesealmacenalohaceenlaposición0(enelejemploseriaPaco).Enlosscriptnohacefaltadeclarareltamañodelaarray,puedesinsertartantosvalorescomodesees.Paradeclararunaarrayes:declare-anombre_arraydeclare-anombresLaopción-asirveparadecirqueloquevasadeclararesunaarray.Paradarlevaloressepuedehacerdedosformas:1.Darlevaloresposiciónporposición.nombre_array[posicion]=valornombres[3]=Manolo2.Darletodoslosvaloresdegolpe(aunquetambiénsepuededecirlaposicióndeseadaenlaquequieresguardarunodelosvalores).nombre_array=(valor1valor2valor3[posicion]=valor4......valorN)nombres=(MariaAlbertoRodrigo[7]=Paco)Paraverelcontenidodelaarrayenunaposición:

10 Sistemas Operativos, Guía 4

${nombre_array[posicion]}${nombres[0]}Parasabercuantoselementoscontienelaarray:${#nombre_array[*]}${#nombres[*]}Pararecuperartodosloselementosdeunaarray:${nombre_array[*]}${nombres[*]}Acontinuaciónunejemplodearrays:arrays.sh#!/bin/bashclearcontador=0declare-ausuario=(AlbertoJohnRobertoLauraSergioCristianDani)forvalorin${usuario[*]}doecho"Elusuario$contadorvale$valor"contador=`expr$contador+1`done

11 Implementación de Redes Linux, Guía 4

Guía4:ProgramaciónShellBash Alumno:

Docente:

MaquinaNo:

GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota

CONOCIMIENTO

Del20al30%

Conocimientodeficientedelosfundamentosteóricos

Conocimientoyexplicaciónincompletadelosfundamentosteóricos

Conocimientocompletoyexplicaciónclaradelosfundamentosteóricos

APLICACIÓNDELCONOCIMIENTO

Del40%al60%

ACTITUD

Del15%al30%

Notieneactitudproactiva.

Actitudpropositivayconpropuestasnoaplicablesalcontenidodelaguía.

Tieneactitudproactivaysuspropuestassonconcretas.

TOTAL 100%


Top Related