<Anterior | Contenido | Siguiente>
Recapitulación
Con la adición de parámetros posicionales, ahora podemos escribir scripts bastante funcionales. Para tareas simples y repetitivas, los parámetros posicionales hacen posible escribir funciones de shell muy útiles que se pueden colocar en un usuario. .bashrc archivo.
Nuestra página_info_del_sistema El programa ha crecido en complejidad y sofisticación. Aquí hay una lista completa, con los cambios más recientes resaltados:
#! / Bin / bash
# sys_info_page: programa para generar una página de información del sistema
PROGNAME = $ (nombre base $ 0)
TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")
TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"
report_uptime () {gato << - _EOF_
Tiempo de actividad del sistema
$ (tiempo de actividad)
_EOF_ volver
#! / Bin / bash
# sys_info_page: programa para generar una página de información del sistema
PROGNAME = $ (nombre base $ 0)
TITLE = "Informe de información del sistema para $ HOSTNAME" CURRENT_TIME = $ (fecha + "% x% r% Z")
TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"
report_uptime () {gato << - _EOF_
Tiempo de actividad del sistema
$ (tiempo de actividad)
_EOF_ volver
}
report_disk_space () {gato << - _EOF_
Utilización del espacio en disco
$ (df -h)
_EOF_ volver
}
report_home_space () {
si [[$ (id -u) -eq 0]]; luego gato << - _EOF_
Utilización del espacio en el hogar (todos los usuarios)
$ (du -sh / inicio / *)
_EOF_
más
gato << - _EOF_
Utilización del espacio en el hogar ($ USER)
$ (du -sh $ INICIO)
_EOF_
fi regreso
}
uso () {
echo "$ PROGNAME: uso: $ PROGNAME [-f file | -i]" return
}
write_html_page () {cat << - _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ volver
}
# procesar opciones de línea de comando
}
report_disk_space () {gato << - _EOF_
Utilización del espacio en disco
$ (df -h)
_EOF_ volver
}
report_home_space () {
si [[$ (id -u) -eq 0]]; luego gato << - _EOF_
Utilización del espacio en el hogar (todos los usuarios)
$ (du -sh / inicio / *)
_EOF_
más
gato << - _EOF_
Utilización del espacio en el hogar ($ USER)
$ (du -sh $ INICIO)
_EOF_
fi regreso
}
uso () {
echo "$ PROGNAME: uso: $ PROGNAME [-f file | -i]" return
}
write_html_page () {cat << - _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ volver
}
# procesar opciones de línea de comando
Recapitulación
interactivo =
nombre de archivo =
mientras que [[-n $ 1]]; hacer caso $ 1 en
-f | --expediente)
Turno
nombre de archivo = $ 1
;;
interactivo =
nombre de archivo =
mientras que [[-n $ 1]]; hacer caso $ 1 en
-f | --expediente)
-i | --interactive) interactivo = 1
;;
-h | --help) salida de uso
;;
*) uso> & 2
salir de 1
;;
cambio esac
done
# modo interactivo
si [[-n $ interactivo]]; entonces mientras sea cierto; hacer
read -p "Ingrese el nombre del archivo de salida:" nombre de archivo si [[-e $ nombre de archivo]]; luego
read -p "'$ filename' existe. ¿Sobrescribir? [y / n / q]>" case $ REPLY en
Y | y) descanso
;;
Q | q) echo "Programa terminado". Salida
;;
*) Seguir
;;
esac
elif [[-z $ nombre de archivo]]; entonces continua
más
break
fi
done
fi
# página html de salida
if [[-n $ nombre de archivo]]; luego
si toca $ nombre de archivo && [[-f $ nombre de archivo]]; luego write_html_page> $ filename
más
-i | --interactive) interactivo = 1
;;
-h | --help) salida de uso
;;
*) uso> & 2
salir de 1
;;
cambio esac
done
# modo interactivo
si [[-n $ interactivo]]; entonces mientras sea cierto; hacer
read -p "Ingrese el nombre del archivo de salida:" nombre de archivo si [[-e $ nombre de archivo]]; luego
read -p "'$ filename' existe. ¿Sobrescribir? [y / n / q]>" case $ REPLY en
Y | y) descanso
;;
Q | q) echo "Programa terminado". Salida
;;
*) Seguir
;;
esac
elif [[-z $ nombre de archivo]]; entonces continua
más
break
fi
done
fi
# página html de salida
if [[-n $ nombre de archivo]]; luego
si toca $ nombre de archivo && [[-f $ nombre de archivo]]; luego write_html_page> $ filename
más
echo "$ PROGNAME: No se puede escribir el archivo '$ filename'"> & 2 salir 1
fi más
escribir_html_pagina
fi
echo "$ PROGNAME: No se puede escribir el archivo '$ filename'"> & 2 salir 1
fi más
escribir_html_pagina
fi
Aún no hemos terminado. Todavía hay más cosas que podemos hacer y mejoras que podemos realizar.