<Anterior | Contenido | Siguiente>
Mantenga las secuencias de comandos en ejecución
Mientras desarrolla nuestro programa, es útil mantener el programa en un estado ejecutable. Al hacer esto y probar con frecuencia, podemos detectar errores al principio del proceso de desarrollo. Esto hará que los problemas de depuración sean mucho más fáciles. Por ejemplo, si ejecutamos el programa, hacemos un pequeño cambio, luego ejecutamos el programa nuevamente y encontramos un problema, es muy probable que el cambio más reciente sea la fuente del problema. Añadiendo las funciones vacías, llamadas trozos En lenguaje de programador, podemos verificar el flujo lógico de nuestro programa en una etapa temprana. Al construir un stub, es una buena idea incluir algo que proporcione retroalimentación al programador, que muestre que se está llevando a cabo el flujo lógico. Si miramos la salida de nuestro script ahora:
[yo @ linuxbox ~] $ página_info_del_sistema
Informe de información del sistema para twin2
[yo @ linuxbox ~] $ página_info_del_sistema
Informe de información del sistema para twin2
Informe de información del sistema para linuxbox
Generado 03/19/2009 04:02:10 PM EDT, por mí
Informe de información del sistema para linuxbox
Generado 03/19/2009 04:02:10 PM EDT, por mí
vemos que hay algunas líneas en blanco en nuestra salida después de la marca de tiempo, pero no podemos estar seguros de la causa. Si cambiamos las funciones para incluir algunos comentarios:
informe_tiempo de actividad () {
echo "Función report_uptime ejecutada".
volvemos
}
informe_espacio_disco () {
echo "Función report_disk_space ejecutada".
volvemos
}
report_home_space () {
echo "Función report_home_space ejecutada".
volvemos
}
informe_tiempo de actividad () {
echo "Función report_uptime ejecutada".
volvemos
}
informe_espacio_disco () {
echo "Función report_disk_space ejecutada".
volvemos
}
report_home_space () {
echo "Función report_home_space ejecutada".
volvemos
}
y vuelva a ejecutar el script:
[yo @ linuxbox ~] $ página_info_del_sistema
Informe de información del sistema para linuxbox
Informe de información del sistema para linuxbox
Generado 03/20/2009 05:17:26 AM EDT, por mí Función report_uptime ejecutada.
Función report_disk_space ejecutada. Función report_home_space ejecutada.
[yo @ linuxbox ~] $ página_info_del_sistema
Informe de información del sistema para linuxbox
Informe de información del sistema para linuxbox
Generado 03/20/2009 05:17:26 AM EDT, por mí Función report_uptime ejecutada.
Función report_disk_space ejecutada. Función report_home_space ejecutada.
Mantenga las secuencias de comandos en ejecución
ahora vemos que, de hecho, nuestras tres funciones se están ejecutando.
Con nuestro marco de funciones en su lugar y funcionando, es hora de desarrollar parte del código de la función. Primero el report_uptime función:
informe_tiempo de actividad () {
gato << - _EOF_
Tiempo de actividad del sistema
$ (tiempo de actividad)
_EOF_
volvemos
}
informe_tiempo de actividad () {
gato << - _EOF_
Tiempo de actividad del sistema
$ (tiempo de actividad)
_EOF_
volvemos
}
Es bastante sencillo. Usamos un documento aquí para generar un encabezado de sección y el resultado del el tiempo de actividad comando, rodeado por etiquetas para preservar el formato del comando. los informe_espacio_disco la función es similar:
informe_espacio_disco () {
gato << - _EOF_
Utilización del espacio en disco
$ (df -h)
_EOF_
volvemos
}
informe_espacio_disco () {
gato << - _EOF_
Utilización del espacio en disco
$ (df -h)
_EOF_
volvemos
}
Esta función utiliza la df -h comando para determinar la cantidad de espacio en disco. Por último, construiremos el informe_home_space función:
report_home_space () {
gato << - _EOF_
Utilización del espacio en el hogar
$ (du -sh / inicio / *)
_EOF_
volvemos
}
report_home_space () {
gato << - _EOF_
Utilización del espacio en el hogar
$ (du -sh / inicio / *)
_EOF_
volvemos
}
Usamos la du comando con el -sh opciones para realizar esta tarea. Sin embargo, esto no es una solución completa al problema. Si bien funcionará en algunos sistemas (Ubuntu, por ejemplo), no funcionará en otros. La razón es que muchos sistemas establecen los permisos de los directorios de inicio para evitar que se puedan leer en todo el mundo, lo cual es una medida de seguridad razonable. En estos sistemas, el informe_home_space función, como está escrito, será
solo funciona si nuestro script se ejecuta con privilegios de superusuario. Una mejor solución sería hacer que el script ajuste su comportamiento de acuerdo con los privilegios del usuario. Trataremos de esto en el próximo capítulo.
Funciones de shell en su archivo .bashrc
Las funciones de shell son excelentes reemplazos para los alias y, de hecho, son el método preferido para crear pequeños comandos para uso personal. Los alias son muy limitados en el tipo de comandos y características de shell que admiten, mientras que las funciones de shell permiten cualquier cosa que pueda ser programada. Por ejemplo, si nos gustó el informe_espacio_disco función de shell que desarrollamos para nuestro script, podríamos crear una función similar llamada ds para nuestro .Bashrc archivo:
ds() {
echo "Utilización del espacio en disco para $ HOSTNAME" df -h
}