Ud 11 - IES Gonzalo Nazareno

Anuncio
Sistemas Informáticos Monousuario y Multiusuario
Ud 11.7.- Programación Scripts
1.- Introducción
Facilitar la automatización de tareas.
2.- Creación, ejecución y depuración de un script
2.1.- Creación
1.- Abrimos el editor de textos gedit y lo configuramos:
2.- Menú_Editar_Preferencias_Ver_Mostrar números de línea.
3.- La primera línea de nuestro script es:
#!/bin/bash Para indicar el intérprete de comandos.
2.2.- Ejecución
1ª forma:
$ sh nombre_script.sh
2ª forma:
$ chmod a+x nombre_script.sh
$./nombre_script.sh
2.3.- Depurar el script
$ sh –x nombre_script.sh
Ejemplo:
+ echo “Hola” El signo + muestra la línea del script
Hola
3.- Salida estándar
echo [opciones] [cadena]
Dentro de la cadena, podemos utilizar:
\n  Salto de línea.
Pero para que sea interpretada, debemos poner en opciones –e.
Ejemplo: echo –e “Mi nombre es: \n Manuel”
3.1.- Comillas:
‘ ‘ Comillas simples.
“ “ Comillas dobles.
`comando` tildes
invertidas.
Todo lo que vaya entre
estas comillas será
interpretado literalmente.
Lo mismo que el anterior,
pero interpretando caracteres
especiales como $ y `.
Todo lo que vaya entre
estas comillas será
ejecutado.
echo $variable  Vemos el contenido de una variable.
1
Sistemas Informáticos Monousuario y Multiusuario
Ejercicio:
Comando
$x=10
$echo ‘ El valor de x=$x’
$echo “ El valor de x=$x”
$echo “ Hoy es `date` ”
Salida en pantalla
4.- Entrada estándar.
Leer una variable:
read [opciones] variable
Opciones:
-s  No se ve en pantalla lo que el usuario escribe.
-n nº  Lee un número de caracteres sin obligar a que el usuario pulse INTRO.
-p “texto”  Muestra un texto.
Script1.sh:
Realizar un script que pregunte tu nombre y muestre en pantalla un texto dándote la
bienvenida:
Script2.sh
Realizar un script que nos pregunta una contraseña y a continuación se la mostramos en
pantalla. La contraseña introducida, no debe aparecer en pantalla.
5.- Variables especiales. Paso de parámetros al script.
$0: Nombre del script
$#: Número de parámetros que le pasamos al script.
$*: Representa todos los parámetros.
$?: Guarda el código del último comando ejecutado.
0  Correcto
Distinto de cero  Fallo
$1…….$9  Hace referencia al n-ésimo argumento de la línea de comandos.
Script3.sh
Rellena los huecos en el script para obtener el resultado esperado:
#!/bin/bash
echo “ El nombre de este script es: …..”
echo “Se han introducido …..
parámetros”
echo “El primer parámetro es ……..”
echo “El segundo parámetro es ……”
echo “Todos los parámetros son …..”
En la línea de comandos se introduce:
Sh script3.sh hola adios
2
Sistemas Informáticos Monousuario y Multiusuario
6.- Expresiones aritméticas.
expr
arg1 operación arg2
El resultado del comando es enviado a la salida estándar.
Entre cada argumento y la operación debe haber un espacio, para que expr pueda
distinguir los argumentos y su operando.
Si queremos recoger el resultado en una variable:
Z=`expr arg1 operación arg2`
Operaciones:
+ suma
- resta
\* multiplicación
/ división
% módulo
Script4.sh
Realizar un script que pregunte dos variables matemáticas, x e y. A continuación debe
mostrar en pantalla las operaciones anteriores.
7.- Expresiones condicionales.
Fotocopias.
Notas:
.- Hay que dejar un espacio después y antes de los corchetes.
[ Expresión ]
.- Hay que dejar espacios entre el operando y operadores.
“A” == “B”
.- [ ! Expresión ]  Espacio después del !.
Anula el valor de la expresión global.
.- ! [ Expresión ]  Espacios después del !
Ejercicio: Encuentra los errores, si es que los hay.
1.- [4 –eq 4]
2.- [ “José” -eq “José” ]
3.- [ 3 = 4]
4.- [ “José”=”José” ]
3
Sistemas Informáticos Monousuario y Multiusuario
8.- Instrucciones de programación condicionales.
8.1.- if
Alternativa simple
if [ condición ]
then
bloque
fi
Alternativa doble
if [ condición ]
then
bloque 1
else
bloque 2
fi
Alternativa múltiple
if [ condición 1 ]
then
bloque1
elif [condición 2 ]
then
bloque2
else
bloque
fi
Script5.sh
Realizar un script que nos pregunte el nombre de un fichero y nos indique si existe o no.
En el caso de que exista, debe ordenarlo alfabéticamente.
Como comprobación realiza un archivo de textos que se llame nombres y que
contengan al menos cinco nombres, uno en cada línea.
Script5a.sh
Es una variante sobre el anterior. Ahora no le preguntamos el nombre del fichero. Se lo
introducimos en la línea de comandos.
Habrá que comprobar que se ha introducido el fichero.
Nota: exit 1 –> Lo utilizaremos para salir del script.
exit n  sale del script con valor n
En Ubuntu, sólo ponemos exit.
4
Sistemas Informáticos Monousuario y Multiusuario
8.2.- case
Nos permite realizar menús.
case $variable in
Nota:
valor1)
Los paréntesis son obligatorios.
bloque1
;;
Valor2)
bloque2
;;
*)
bloque por defecto
;;
esac
Script6.sh
Realizar un script que muestre el siguiente menú.
_________________________
Menú
_______________________
1.- Fecha actual.
2.- Calendario.
3.- Salir.
9.- Instrucciones de programación repetitivas.
9.1.- for
for variable in conjunto
do
bloque
done
La variable irá tomando cada uno de los
valores del conjunto.
Para cada valor del conjunto se ejecutará
el bloque.
Nota: Los valores del conjunto se pueden dar de diversas formas:
.- Separados por espacios.
.- Líneas de un fichero.
9.2.- while
while [ condición ]
do
bloque
done
Mientras que la condición sea verdadera,
se repetirá el bloque.
5
Sistemas Informáticos Monousuario y Multiusuario
Script7.sh
Realizar un script que reciba como parámetros varios nombres separados por espacios.
Debe saludar individualmente a cada uno.
Script8.sh
Es una variante del anterior. El nombre de los amigos se lo vamos a dar en un fichero.
Creamos el siguiente fichero:
Amigos:
Ángel
María
Carmen
10.- Funciones.
Definición de la función.
Nombre_funcion ()
{
Bloque
}
Llamada a la función.
Nombre_función parámetros
Ejemplo:
Nombre_función hola adios
$1
$2
Le hemos pasado a la función hola y adios.
Esos dos parámetros son recogidos dentro de la función
como $1 y $2.
No debemos confundirlos con el $1 y $2 que se le pasa
al script en la línea de comandos.
La función debe estar creada antes de utilizarla.
Las variables dentro de la función se consideran globales (al contracio que C).
Para que una variable se considere local, ponemos: local variable
Script9.sh
Realizar un script que tenga una función llamada suma, que reciba dos numeros y nos
muestre la suma.
11.- Diseño de un bucle.
Vamos a diseñar un bucle controlado por centinela.
LEER (variable)
MIENTRAS (condición)
BLOQUE
LEER (variable)
FIN-MIENTRAS
6
Sistemas Informáticos Monousuario y Multiusuario
Script10.sh
Diseñar el siguiente menú.
_______________________
Menú
_______________________
1.- Fecha del sistema.
2.- Calendario.
3.- Salir.
El menú se repetirá mientras que no se pulse salir.
Crear una función para el menú.
12.- Variables de entorno.
HOME
PATH
LOGNAME
SHELL
TERM
HOSTNAME
Directorio de trabajo del usuario
Ruta donde se buscan los comandos.
Nombres separados por :
Nombre del usuario.
Nombre completo de la shell.
Tipo de Terminal que se está usando.
Guarda el nombre del equipo.
7
Descargar