0% encontró este documento útil (0 votos)
6 vistas24 páginas

U5 Programación Shell Script Linux

La Unidad 5 se centra en la programación de Shell Script en Linux, abarcando desde comandos básicos hasta estructuras de control y funciones. Se exploran temas como la entrada y salida de datos, redirección de flujos, y la utilización de comandos como grep y sed. Al finalizar, se espera que los estudiantes sean capaces de crear scripts, manejar variables y comprender el funcionamiento de procesos en el sistema.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas24 páginas

U5 Programación Shell Script Linux

La Unidad 5 se centra en la programación de Shell Script en Linux, abarcando desde comandos básicos hasta estructuras de control y funciones. Se exploran temas como la entrada y salida de datos, redirección de flujos, y la utilización de comandos como grep y sed. Al finalizar, se espera que los estudiantes sean capaces de crear scripts, manejar variables y comprender el funcionamiento de procesos en el sistema.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Unidad 5

Programación
Shell Script Linux

Administración de
sistemas operativos
Índice Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.1. Comandos básicos

5.2. Entrada y salida


5.2.1. Entrada y salida por consola
5.2.2. Redirección entrada y salida

5.3. Expresiones
5.3.1. Comando grep
5.3.2. Comando sed

5.4. Control de flujo


5.4.1. Condición if – then – else – if
5.4.2. Condición case
5.4.3. Bucle for
5.4.4. Bucle while
5.4.5. Bucle until

5.5. Funciones
5.5.1. Valores de retorno
5.5.2. Pasar parámetros
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Introducción
Una de las mayores causas del auge de los sistemas Unix/Linux
es que sirven muy eficientemente como plataforma para el de-
sarrollo de los sistemas.

Una de las principales características que tienen los sistemas


Linux, por no decir la principal, es que cuentan con más de 200
comandos básicos propios del sistema. Estos comandos nos
permiten realizar prácticamente cualquier acción en el sistema.
De hecho, es gracias a esto por lo que podemos tener distri-
buciones de Linux sin interfaz gráfica. No obstante, lo mejor de
todo esto es que la gran mayoría de los comandos se pueden
combinar entre sí de manera muy sencilla a la vez que eficiente.

El Shell de Linux es un programa del sistema que se encarga de


leer los comandos y convertirlos en lenguaje entendible para el
sistema. Además, este propio Shell además de tener la función
de interprete de comandos, también se puede usar como un
lenguaje de programación al completo, lenguaje que veremos
en esta unidad.

Al finalizar esta unidad


+ Conoceremos los comandos básicos + Podremos tratar con estructuras de
de Linux. control y flujo para el desarrollo de
Shell Scripts mediante programación
+ Sabremos como emplear de forma estructurada.
correcta las distintas estructuras del
lenguaje de programación que pro- + Sabremos programar estructuras,
porciona el Shell de Linux. funciones y paso de parámetros.

+ Seremos capaces de redireccionar la + Distinguiremos entre variables loca-


entrada y la salida estándar tanto a les y globales.
consola como a ficheros.
+ Seremos capaces de detallar su fun-
cionamiento en el uso de variables
en funciones.

3
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.1. Comandos básicos


Nos referimos como comando en los sistemas de Linux a cual-
quier instrucción programa susceptible de ser ejecutado, en
los siguientes apartados vamos a ir viendo los más básicos.

Los comandos en Linux siguen toda una misma sintaxis básica:

comando [opciones] [argumentos]

Para cada comando, las opciones y argumentos serán diferen-


te, y además habrá muchas veces que estos sean opcionales
y no obligatorios. Estas opciones pueden ser cortas, de hecho,
puede que solo sean una letra o puede que se formen por una
palabra entera. Aunque hay varios tipos de opciones que pue-
den usarse en un mismo comando, las cortas a veces hasta se
pueden unificar en una única expresión, pero eso dependerá
del comando. En Linux, comandos y opciones son sensibles a
mayúsculas y minúsculas, por lo que hay que escribir siempre
de manera correcta el comando o puede que nos de error o
que el resultado no sea el deseado.

Listando archivos

El comando para listar archivos en Linux es ls.

El nombre de este comando viene derivado de la palabra LiSt,


porque lista los nombres de los ficheros que se encuentran en
un directorio en concreto. Si no le indicamos nada al fichero,
será el directorio en el que nos encontremos en ese momento
en concreto, pero le podemos pasar como argumentos el di-
rectorio que queremos que liste.

Imagen 1. ls en directorio /home/alumno

Desplegando el contenido de un archivo

Uno de los principales comandos que tenemos a la hora de mos-


trar en la línea de comandos la información de un archivo es:

cat [archivos] [ { > | >> | < | << } archivo ]

Se muestra la información de todos los archivos concatenada


de manera secuencial. Además, la salida puede ser redireccio-
nada a un archivo con las siguientes opciones:

4
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

› sobrescribe en caso de que el archivo exista, si no es así,


lo crea.

› >> el contenido se añade a un fichero existente justo des-


pués del que ya almacena. Si no existe el fichero lo crea.

Esta orden entonces podemos decir que se usa para crear ar-
chivos de una extensión corta rápidamente.

Imagen 2. Comando cat

Desplegando texto

El comando echo se usa para mostrar por pantalla los argumen-


tos que se le pasen al comando. La salida también se podría
redirigir si quisiéramos al igual que con el comando anterior.

Imagen 3. Comando echo


Copiando archivos

Si queremos copiar archivos debemos de usar el comando cp.


La sintaxis de este comando es:

cp [-irR] archivos_que_copiar destino

Si en el destino tenemos archivos de igual nombre, por defecto


se sobrescribirá su información al copiar los nuevos. Las opcio-
nes más usadas por este comando son:

› i: pedirá confirmación para la copia si se tiene que so-


brescribir un archivo.

› r o R: se copia de manera recursiva cuando se usen


directorios.

En el siguiente ejemplo vemos como se copia el directorio dir-


prueba dentro de Descargas:

PARA TENER EN CUENTA...

Debemos de distinguir que


el copiar archivos o direc-
Imagen 4. Comando cp torios no los elimina del
origen, sino que simple-
mente plasma una copia.
Hemos visto en el ejemplo, que si no se usa la opción -r, no
nos dejará copiar el directorio.

5
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Desplegando los procesos del sistema

Los procesos se identifican gracias a un identificador único de-


nominado PID, Identificador de proceso. El PCB de cada proceso
almacena información acerca de este, principalmente:

› El PID del proceso.

› Identificación del proceso padre, PPID.

› Usuario propietario.

› Valores del estado del proceso en el momento de pro-


ducirse el cambio de contexto.

› Estado.

› Valores de referencia de memoria RAM.

› Ficheros abiertos.

› Buffers de memoria usados.

Para obtener información acerca de los procesos del sistema


usaremos el comando ps [modificadores]. Este comando tie-
ne un sinfín de opciones y una potencia mayor aún, por lo que
para poder verlos todos debemos de acceder a su manual de
ayuda con el comando man ps.

No obstante, los principales modificadores son:

› Para obtener información de todos los procesos del sistema:


» ps aux
» ps -ef

› Para imprimir información jun a un árbol de procesos.


» ps axjf

Imagen 5. Comando ps aux

6
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

El comando ps aux muestra una serie de información que se


establece en la cabecera:

› Usuario propietario del proceso.

› PID del proceso.

› CPU consumida en porcentaje.

› Memoria RAM consumida en porcentaje.

› Tamaño del proceso en la memoria virtual en KB.

› Tamaño de la memoria residente de proceso en KB.

› Terminal de lanzamiento.

› Estado del proceso.

› Tiempo de inicio del proceso.

› Tiempo de CPU consumido.

› Comando que lo ejecuta.


Los estados de un proceso en el comando pueden ser los siguientes:

Estados de un proceso

Estado Descripción

R Ejecutándose o listo para ser ejecutado. (Runnable)

S Bloqueado o durmiendo (Sleeping).

T Parado (Trace).

Z Zombi (proceso muerto pero el proceso padre no ha


detectado su final).

I Inactivo en creación (idle)

N Con prioridad menor de lo normal (NICE).

< Con prioridad mayor de lo normal.

+ Se encuentra en el grupo de procesos en primer


plano.

s Proceso líder de sesión.

L Proceso multihilo.

Si en cambio, lo que queremos es ver una actualización cons-


tante de cómo evolucionan los procesos del sistema, el co-
mando a ejecutar será top, y para salir de este comando pul-
saremos la tecla “q”.

7
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Si ejecutamos el comando veremos que antes de listar los pro-


cesos, tenemos una serie de líneas que nos aportan informa-
ción sobre el sistema.

› Línea 1: hora actual, tiempo del sistema encendido, nú-


mero de usuarios y carga media en intervalos de 1,5 y 15
minutos, respectivamente.

› Línea 2: número de tareas, número de proceso en estad,


ejecutándose o listos, bloqueados o hibernando para-
dos y zombis respectivamente.

› Línea 3: tiempos de CPU, de usuario, kernel, etc.

› Línea 4: tamaño en MB de memoria física en total, libre.


Usada y utilizada por buffer.

› Línea 5: tamaño en MB de memoria virtual total, libre


usada y disponible.

Una vez terminadas estas líneas, la salida de procesos es si-


milar a ps y sus opciones al igual que con el comando anterior,
son muchas y muy específicas, por lo que antes d usarlo es
recomendable leer su manual.

Imagen 6. Comando top.

Imagen 7. man top.

8
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Resumen de comandos

Comandos básicos de Linux

Comando Descripción

apropos Informa sobre un comando

cat Visualiza el contenido de un fichero

cd Cambia de directorio

cmp, diff Compara ficheros

cp Copia archivos

chgrp Cambia el grupo de un fichero

chmod Se cambian los permisos de un fichero o directorio

chown Cambia el usuario propietario de un fichero o directorio

file Indica el tipo de un fichero

find Busca ficheros o directorios

grep Busca un patrón en un fichero o salida de un comando

head Visualiza x líneas del comienzo de un fichero

info Similar a man

less Similar a cat

locate Busca ficheros

ls Lista el contenido de un fichero

man Nos enseña el manual sobre un comando

mkdir Crea un directorio

more Igual a cat

mv Mueve ficheros

pwd Muestra el directorio en que nos encontramos

rm Borra ficheros

rmdir Borra directorios

tail Visualiza x líneas del final del fichero

umask Cambia los permisos por defecto de los ficheros que se crean

wc Cuenta líneas/palabras/caracteres

whatis Breve referencia sobre un comando

whereis Busca ficheros binarios

9
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.2. Entrada y salida


En cuanto a la programación en Shell Script nos referimos, lo
primero que vamos a enunciar es como se deben de estructu-
ras los ficheros creados y como los debemos de guardar.

Los ficheros de Shell Script se guardan con la extensión .sh y


todos deben de empezar por la siguiente línea:

#!/bin/bash

Luego, para poder ejecutar estos ficheros como programas, lo


más recomendable será usar la siguiente estructura:

./[Link]

5.2.1. Entrada y salida por consola

Cuando queremos crear un primer script, lo primero que de-


bemos saber es que la sentencia echo, nos muestra un texto
por pantalla. Su sintaxis es la siguiente:

echo opciones “Texto a mostrar”

Además, podemos añadirle la opción -n para que agregue un


Imagen 8. Ejemplo de script 1.1
salto de línea.
Cuando creemos nuestro primer script, por lo general este irá sin
La otra sentencia introductoria es read, que se usa para la en-
los permisos de ejecución, por lo que habrá que otorgárselos.
trada de datos mediante el teclado para nuestro programa. Su
estructura es la siguiente:

read variable
Imagen 9. Ejemplo de script 1.2
Las variables realmente se usan para almacenar datos temporales
en un espacio de memoria, y se pueden indicar como queramos, A continuación, vemos como quedaría la salida del script de la
lo común es usar las letras x, y, z, i, etc., como en matemáticas. imagen anterior:

Cuando queramos trabajar con el contenido de una variable, por


ejemplo, para mostrarla, bastará con indicar antes de la variable
el símbolo dólar, ‘$’. La sentencia read puede leer varios datos al
mismo tiempo, y sobrescribir el contenido de una variable.

Imagen 10. Ejemplo de script 1.3

10
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.2.2. Redirección entrada y salida

Por lo general, la gran mayoría de comandos de una terminal


reciben la información que procesar mediante un flujo de en-
trada y los datos son enviados o mostrados mediante otro flujo
de salida. Dependiendo del comando, el SO por defecto asigna
entradas y salidas estándar para los dos flujos respectivamente.

Por defecto en el sistema existen tres ficheros que cumplen


con entradas y salidas estándar, que son:

› Entrada estándar (stdin).

› Salida estándar (stdout).

› Salida de errores estándar (stderr).

Estos ficheros tienen un número que los describe, 0, 1 y 2, res-


pectivamente.

Suele asociarse la entrada estándar al teclado y la salida están-


dar y salida de errores estándar a la pantalla, pero esto no es
siempre así, porque hay veces en las que las entradas o salidas
se pueden nutrir de otros ficheros del sistema.

Por último, como veremos a continuación este flujo de entrada y


salida puede cambiarse con diversas opciones de los comandos.

Redirecciones de las salidas estándar

Como ya vimos cuando hablábamos del comando cat, se pue-


de usar el operador > para que la salida de un comando se re-
dirija y se añada a un fichero en vez de mostrarse por pantalla.

Se sigue la siguiente sintaxis:

Comando > fichero

Como vimos, si el fichero no existe, lo crea. Y si existe, sobres-


cribe su contenido. Podríamos además usar la expresión 1>
que daría el mismo resultado al llevar el descriptor del fichero
de salida estándar.

Se puede usar también el operador >>, que hará la misma fun-


ción, pero en este caso si el fichero existe, el contenido se ane-
xa al que ya tiene, pero no se sobrescribe, si no existe, lo crea.
La sintaxis es la misma que la anterior.

Redirecciones de la entrada estándar

Al igual que se redirecciona la salida, también se puede redi-


reccionar la entrada, que se ejecuta con el operador <.

La sintaxis que sigue es:

Comando < fichero

También se puede usar un tipo de redirección, que lo que hace


es que permite escribir tantas líneas como queramos hasta que
se encuentre con el delimitador que nosotros establezcamos.

11
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

La sintaxis de este es como la siguiente:

cat <<delimitador

En la siguiente imagen podemos ver un ejemplo de cada uno


de los dos casos:

Imagen 11. Redirecciones 1

Como podemos ver en la imagen anterior, al usar la redirección


con un delimitador, cuando escribimos en el prompt dicho de-
limitador, la orden muestra el resultado y termina.

Redirección de la salida de error estándar

Habrá ocasiones en las que un comando nos de error y esto es


normal, porque nos podemos equivocar en la sintaxis, en los ar-
gumentos, etc. Cuando esto sucede, se suele mostrar un resul-
tado de error por pantalla, pero si por ejemplo queremos alma-
cenar estos errores para llevar un registro, podríamos hacerlo
también, usando el operador 2>. Su sintaxis es la que sigue:

comando 2> fichero

Se podría también usar el operador 2>> para que el fichero no


se sobrescriba como pasaba con la salida estándar.

Por ejemplo, si realizamos un ping a una dirección que no exis-


te, se vería del siguiente modo:

Imagen 12. Redirecciones 2

Redirección de la salida estándar y la salida de error


estándar al mismo destino

Al igual que se redirigen la salida estándar y la salida de errores


estándar, también podemos realizar una redirección de ambas
a la vez al mismo fichero siguiendo las sintaxis anteriores, pero
usando el operador &>.

12
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Si seguimos con el ejemplo del ping anterior:

Imagen 13. Redirecciones 3

*Podemos fijarnos en que el ping se ha parado de manera natu-


ral porque era continuo para que mostrase algún tipo de error*

Redirección de la salida estándar y la salida de error es-


tándar de una orden con la entrada estándar de otra orden

Tenemos también en Linux la opción de concatenar la salida


de varios comandos para que sirvan como entrada a otros y
viceversa. Esto se realiza con el uso de tuberías o pipes que se
representan con el símbolo ASCII “|”. La sintaxis de estas redi-
recciones es muy sencilla:

Comando1 | comando2

Para redireccionar ambas salidas, estándar y de error están-


dar se usa el símbolo |& siguiendo la misma sintaxis que la
salida estándar.

Y, además, entre comandos podemos usar el comando tee


para añadir información a la salida del anterior y consecuente-
mente a la entrada del siguiente.

Vamos a ver un ejemplo:

Imagen 14. Redirecciones 4

Podemos ver que la salida del primer comando mostraba 4


líneas, por eso cuando hemos ejecutado la concatenación si-
guiente, nos ha devuelto dicho número.

Redirección de la salida de error a la salida estándar

Podemos usar el operador 2>&1 si queremos que la salida de


error salga por el mismo sitio que la salida estándar, pero real-
mente no tiene mucho efecto y no suele usarse.

13
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.3. Expresiones
Hay una serie de comandos que nos permiten usar las expresio-
nes regulares para poder buscar o filtrar por patrones específicos.

Las expresiones regulares se componen de caracteres combi-


nados con operadores, y en el siguiente cuadro podemos ver
las principales:

Expresiones regulares

Expresión Descripción

^ Principio de línea

$ Final de línea

\< Principio de palabra

\> Final de palabra

. Cualquier carácter simple excepto el salto de línea

[] Conjunto de caracteres

[^] Cualquier carácter no contenido

[-] Rango

* Cero o más ocurrencias del elemento que lo


precede

+ Uno o más ocurrencias del elemento que lo


precede

? El elemento precedente es opcional

() Agrupación

| O uno u otro

{n] El elemento precedente se repite n veces

{n,} El elemento precedente se repite al menos n veces

{n,m} El elemento precedente se repite un mínimo de n


veces y un máximo de m veces

14
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.3.1. Comando grep

La sintaxis del comando grep para filtrar es:

grep [-nvlicw] patrón ficheros

Y sus opciones son las siguientes:

› l: solo se van a mostrar los ficheros que contengan el


patrón que hemos seleccionado.

› i: no distingue entre mayúsculas y minúsculas.

› c: nos muestra el número total de las líneas que contie-


nen el patrón que se ha especificado.

› w: busca el patrón en una palabra completa y no como


parte de una cadena de caracteres.

› n: se muestra el número de línea de cada una de las que


tengan el patrón especificado.

› v: busca las líneas que no contengan el patrón que se


ha pasado.

Por ejemplo, vamos a filtrar por el usuario root en /etc/group:

Imagen 15. Comando grep

Podemos ver las cuatro ocasiones que lo hemos usado y que


su resultado ha sido correcto.

Existe la opción -E o el comando egrep que permite el uso de las


expresiones regulares extendidas para patrones más complejos.

También existe la opción --color para marcar de color los re-


sultados de coincidencia del patrón.

5.3.2. Comando sed

Las expresiones regulares también se pueden usar mediante


el comando sed. Aunque su función puede ser la de búsqueda,
a la hora de la verdad el uso de este comando viene más enfo-
cado al remplazo de texto. Su sintaxis es la siguiente:

sed -n[r] ‘/REGEX/p’ FICHERO

Comando | Sed -n[r] ‘/REGEX/p’

15
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.4. Control de flujo


Los controles de flujo en los distintos lenguajes de programa-
ción los conocemos como estructuras de control. Cada una de
estas sentencias se encuentran delimitadas por una palabra
reservada o un operador de control al principio y otro al final,
que se suele usar como un terminador.

Las condiciones son una de las principales estructuras en la


programación.

5.4.1. Condición if – then – else – if

En el Shell Script de Linux podemos establecer condiciones


para realizar comparaciones y así establecer un primer filtro de
resultados.

La sentencia que se usa para las condiciones por lo general es


if, que tiene la siguiente estructura:

if [ condición ]; then
Sentencia1
Sentencia2

Sentencia n
else
Sentencia1
Sentencia2

Sentencia n
fi

Podemos ver que esta condición se cierra con la misma sen-


tencia inversa, es decir, fi, pero entre medias, tenemos else, que
nos indica que debemos de hacer si no se cumple la condición
anterior a then.

Para las condiciones de if, lo normal es que trabajemos con núme-


ros, para lo que tenemos las siguientes condiciones principales:

Operadores de comparación

Condición Significado

-gt Mayor que

-ge Mayor o igual que

-eq Igual que

-ne No igual que

-le Menor o igual que

-lt Menor que

16
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Si lo que queremos es comparar caracteres exactos, habrá que


usar los numeradores siguientes: >, >=, ==, <>, <=, <; todos son
respectivos a los del cuadro anterior. En este caso habrá que
poner el carácter a comparar entre comillas “”.

Ahora que sabemos esto, un ejemplo de condición con if, po-


dría ser el siguiente.

Imagen 16. Condiciones if 1

Su resultado sería…

Imagen 17. Condiciones if 2

Otra característica de estas condiciones es que podemos ani-


dar un if dentro de otro, eso sí, finalizando siempre cada uno
cuando le toque.

Imagen 18. Condiciones if 3

Imagen 19. Condiciones if 4

Por último, en estos condicionales, tenemos una sentencia ani-


dada que sirve para cuando dentro de else, queremos añadir otra
condición, la sentencia es elif (acortamiento de else if) y se añade
la condición como con if pero sin necesidad de terminar con fi.

17
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Imagen 20. Condiciones if 5

Imagen 21. Condiciones if 6

Hay que añadir, por último, que tanto los else, como los elif,
son sentencias opcionales dentro de if y, además, no pueden
funcionar sin esta primera sentencia.

5.4.2. Condición case

Como hemos enunciado antes, lo principal en cuanto a condi-


ciones suele ser la sentencia if, pero dependiendo de que con-
dición queramos implantar, en vez de tener varios if anidados,
podemos usar la condición case.

Esta condición se basa en distintos casos que según sean o


no coincidentes con el valor pasado, nos mostrará la sentencia
que deseemos, siguiendo la siguiente estructura:

case condición in
Case1)
Sentencias
;;
Case2)
Sentencias
;;
Case n)
Sentencias
;;
*)
Sentencias
esac

18
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

Un ejemplo de una condición con case puede ser el siguiente:

Imagen 22. Condiciones case 1

Si lo probamos, vemos que funciona a la perfección.

Imagen 23. Condiciones case 2

Se pude observar que en la condición podemos simplemente


nombrar la variable.

19
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.4.3. Bucle for

Los bucles se usan como estructuras de control que se repi-


ten durante un periodo de tiempo marcado por unas condi-
ciones claras.

El primero de los bucles que vamos a ver es el bucle for. Este


bucle repetirá una serie de sentencias para cada elemento de
una lista hasta que esta termine. Su estructura es la siguiente:

for variable in elemento1 elemento2 … elementon


do
Sentencias
done

Por ejemplo, podemos hacer un ejemplo con esta estructura


como el siguiente:

Imagen 24. Bucle for 1

Imagen 25. Bucle for 2

Este tipo de bucles, también se pueden mostrar del siguien-


te modo:

for ((variable=valor; variable condición valor; in-


cremento/decremento)); do
Sentencias
done

Este es el llamado bucle for del lenguaje de programación C,


que se basa en el incremento de una variable.

Imagen 26. Bucle for 3

Vemos que dentro de esto podemos añadir sentencias dife-


rentes y que todo funciona correctamente, como se demues-
tra en la siguiente imagen:
Imagen 27. Bucle for 4

20
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.4.4. Bucle while 5.4.5. Bucle until

El siguiente bucle que vamos a ver es el while. Este bucle se El bucle until hará que las instrucciones se repitan hasta que la
caracteriza por repetir sentencias siempre que la condición condición sea verdadera.
marcada sea verdadera y su estructura es:
Su estructura es la siguiente:
while [ condición ]
do until [ condición ]
Sentencias do
done Sentencias
done
Un ejemplo de esto puede ser el que vemos a continuación:
Podemos hacer el ejemplo anterior pero a la inversa.

Imagen 28. Bucle while 1

Imagen 30. Bucle while 1


Vemos que hemos inicializado la variable primeramente y
que, además, después, vamos a incorporar una operación
para incrementar la variable y así, poder terminar un bucle, si
no tuviéramos esto, se crearía un bucle infinito.

Imagen 31. Bucle while 2

Imagen 29. Bucle while 2 Si nos fijamos en las imágenes, este sacaría lo mismo que con
while usando menos sentencias, lo que lo haría más eficiente
y, por lo tanto, mejor opción.

21
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.5. Funciones
En Shell script existen una serie de sentencias que se llaman
funciones. Estas funciones se pueden insertar en cualquier
parte del código de nuestro script y pueden ser llamadas al
escribir el nombre de la función. Cuando llamamos a una fun-
ción, lo que hacemos es ejecutar el bloque de código que va
dentro de esta.

La estructura de una función es:

función () {
Sentencias
}

Tenemos varias aclaraciones que debemos de hacer con res-


pecto a las funciones:

› Lo que se comprende entre las llaves, {}, es lo que llama-


mos el cuerpo de la función.

› Como hemos dicho antes, si queremos llamar a una


función para que se ejecute, lo hacemos escribiendo el
nombre de la función.

› Siempre hay que definir la función antes de llamarla, si


no, dará fallo.

› Debemos intentar llamar a la función con un nombre que


nos de una pequeña intuición de que va a realizar la función.

Un ejemplo de función puede ser como lo que a continuación


se nos presenta:

Imagen 32. Funciones 1

Observemos que si indicamos $((sentencia), se nos devuelve el


resultado de la sentencia.

Su salida sería la siguiente:


Imagen 33. Funciones 2

Las mismas funciones también se pueden escribir del siguien-


te modo:

Imagen 34. Funciones 3

22
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

5.5.1. Valores de retorno

En las funciones de Shell Script no tenemos un retorno como


tal, aunque los llamemos. Con retorno, nos referimos al indica-
dor del resultado de la función, por ejemplo, si todo finaliza con
éxito, el valor de retorno de una función será 0. Si ocurre algún
error o fallo será valorado con un número del 1 al 255.

Podemos especificar en Shell Script el valor de retorno con la


palabra return o asignándolo a la variable $?. Siempre que es-
pecifiquemos esto, la función se dará por terminada.

5.5.2. Pasar parámetros

Podemos pasar argumentos o parámetros a un script simple-


mente escribiéndolos seguidos a su ejecución. Además, pode-
mos también asignarle esos parámetros a una función y operar
con ellos como variables locales.

La estructura sería la siguiente:

› Para un script:

./[Link] parámetro1 parámetro2 … parámetron

› Para una función sería igual, pero a la hora de llamar a


dicha función.

Vamos a tener en cuenta ahora varias consideraciones acerca


de los parámetros:

› Los parámetros que pasamos son $1,$2,…,$n correlativa-


mente a la posición en la que se introducen.

› La variable $0 nos indica el nombre del script.

› La variable $# nos indica cuantos parámetros se han pasado.

› La variable $* muestra todos los parámetros seguidos.


También se puede usar $@.

Aquí tenemos un ejemplo práctico de parámetros:

Imagen 35. Parámetros 1

Imagen 36. Parámetros 2

23
Administración de sistemas operativos | UNIDAD 5
Programación Shell Script Linux

24

También podría gustarte