Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Funciones de Shell

Nuestro script actualmente realiza los siguientes pasos para generar el documento HTML:

1. Abra la página.

2. Abra el encabezado de la página.

3. Establecer el título de la página.

4. Cierre el encabezado de la página.

5. Abra el cuerpo de la página.

6. Encabezado de la página de salida.

7. Marca de tiempo de salida.

8. Cierre el cuerpo de la página.

9. Cerrar página.

Para nuestra próxima etapa de desarrollo, agregaremos algunas tareas entre los pasos 7 y 8. Estas incluirán:

● Carga y tiempo de actividad del sistema. Esta es la cantidad de tiempo desde el último apagado o reinicio y el número promedio de tareas que se están ejecutando actualmente en el procesador en varios intervalos de tiempo.

● Espacio en disco. El uso general del espacio en los dispositivos de almacenamiento del sistema.

● Espacio hogareño. La cantidad de espacio de almacenamiento que utiliza cada usuario.


Si tuviéramos un comando para cada una de estas tareas, podríamos agregarlas a nuestro script simplemente mediante la sustitución de comandos:



#! / Bin / bash


# Programa para generar una página de información del sistema


TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


gato << _EOF_

#! / Bin / bash


# Programa para generar una página de información del sistema


TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


gato << _EOF_


$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

_EOF_


Podríamos crear estos comandos adicionales de dos formas. Podríamos escribir tres scripts separados y colocarlos en un directorio listado en nuestro PATH, o podríamos incrustar los scripts dentro de nuestro programa como funciones de shell. Como hemos mencionado antes, las funciones de shell son "mini-scripts" que se encuentran dentro de otros scripts y pueden actuar como programas autónomos. Las funciones de shell tienen dos formas sintácticas. Primero, la forma más formal:

función nombre {

comandos

volvemos

}

y la forma más simple (y generalmente preferida):

nombre () {

comandos

volvemos

}

imagen

#! / Bin / bash

#! / Bin / bash

# Demostración de la función Shell


function step2 {echo "Step 2" return

}

# El programa principal comienza aquí echo "Paso 1"

# Demostración de la función Shell


function step2 {echo "Step 2" return

}

# El programa principal comienza aquí echo "Paso 1"

donde nombre es el nombre de la función y comandos es una serie de comandos contenidos dentro de la función. Ambas formas son equivalentes y pueden usarse indistintamente. A continuación, vemos un script que demuestra el uso de una función de shell:


1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

5

6

7

8

9

10

11

12

Funciones de Shell


13 paso2

14 echo "Paso 3"

13 paso2

14 echo "Paso 3"


A medida que el shell lee el script, pasa por las líneas 1 a 11, ya que esas líneas constan de comentarios y la definición de la función. La ejecución comienza en la línea 12, con un echo comando. Línea 13 llamadas la función de shell step2 y el shell ejecuta la función como lo haría con cualquier otro comando. El control del programa luego se mueve a la línea 6, y el segundo echo se ejecuta el comando. A continuación se ejecuta la línea 7. Su volvemos comando termina la función y devuelve el control al programa en la línea que sigue a la llamada a la función (línea 14), y el comando final echo se ejecuta el comando. Tenga en cuenta que para que las llamadas a funciones se reconozcan como funciones de shell y no se interpreten como nombres de programas externos, las definiciones de funciones de shell deben aparecer en el script antes de que se llamen.

Agregaremos definiciones mínimas de funciones de shell a nuestro script:



#! / Bin / bash


# Programa para generar una página de información del sistema


TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


report_uptime () {retorno

}


report_disk_space () {retorno

}


report_home_space () {retorno

}


gato << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)

#! / Bin / bash


# Programa para generar una página de información del sistema


TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


report_uptime () {retorno

}


report_disk_space () {retorno

}


report_home_space () {retorno

}


gato << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

$ (report_uptime)

$ (report_disk_space)

$ (report_home_space)


_EOF_

_EOF_


Los nombres de las funciones de shell siguen las mismas reglas que las variables. Una función debe contener al menos un comando. los volvemos comando (que es opcional) satisface el requisito.


Top OS Cloud Computing en OnWorks: