11
1 Implementación de Redes Linux, Guía 4 Tema: Programación Shell Bash En esta guia se proporciona una introducción a la creación de programas scripts con el interprete de comandos bash, se crearan una serie programas de ejemplos donde se practicara la sintaxis de variables, estructuras de condicionales, estructuras repetitivas, entre otros. a) Crear script interpretados por el shell bash. b) Aprender la sintaxis de la programacion script bash. a) Virtual Box b) Ubuntu c) Centos Un programa shell es un archivo de texto que contiene una serie comandos Linux utilizando la sintaxis propia de programacion de un interprete de comandos determinado. Cuando un programa shell es ejecutado, el shell lee el contenido del archivo línea por línea y la ejecuta como si se estuviera escribiendo cada comando en la línea de comandos. No hay nada que no se pueda poner en un programa shell que no se pueda escribir en la línea de comandos. Los programas shell contienen mas estructuras de lo que esperaría en un simple lenguaje de programación. Los programas script pueden estar estructurados de la siguiente manera: a) Variables. b) Estructuras de control (if-else, switch, entre otros). c) Bucles (while, for). d) Funciones. e) Comentarios. f) Entre otras estructuras. La forma en que estas estructuras son implementados depende del shell en que se este programando. Los programas shell son archivos de texto plano que no necesitan ser compilados (como programas escritos en c/c++, java, entre otros lenguajes, que requieren compilación y vinculación para producir un archivo ejecutable). El shell interpreta los programas shell, si hay un error (sintaxis o ejecución) se despliega su respectivo mensaje como si se hubiera escrito en la línea de comandos. Contenido Objetivo Especifico Material y Equipo Introduccion Teorica Facultad: Ingeniería Escuela: Computación Asignatura: Implementación de Redes Linux

Tema: Programación Shell Bash - udb.edu.sv · a) Crear script interpretados por el shell bash. b) Aprender la sintaxis de la programacion script bash. a) Virtual Box b) Ubuntu c)

  • Upload
    others

  • View
    32

  • Download
    0

Embed Size (px)

Citation preview

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%