You are on page 1of 4

Actividad 14: Scripts II. Ampliacin de comandos y Funciones.

Ampliacin de comandos ---------------------Tal y como se apunt en la actividad anterior los scripts permiten aumentar las capacidades vistas hasta ahora del intrprete de comandos. Dentro de la ampliacin de comandos existen tres apartados diferentes: - Tratamiento de argumentos del script - Comandos del sustitucin - Expansin aritmtica Tratamiento de argumentos del script -----------------------------------Los argumentos en la llamada al script sobre el indicativo del sistema, son considerados como variables especiales en el interior del guin. Los argumentos se referencian as: - $0: Nombre del script - $1, $2, ..., $8 y $9: Primer, segundo, ..., octavo y noveno argumento Escribir el nmero encerrado entre llaves: ${nn} para los argumentos siguientes. Por ejemplo, contenido y ejecucin del fichero scrpt5_arg :

#! /bin/sh #script para el manejo de argumentos echo $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} #./scrpt5_arg 1 2 3 4 5 6 7 8 9 0 ./scrpt5_arg 1 2 3 4 5 6 7 8 9 0 # _ El comando 'shift' desplaza argumentos, es decir, si inicialmente el argumento 1 corresponde a $1, el 2 a $2 y el 3 a $3, despus de llamar a shift el contenido de las variables valdra: $1 nulo, $2= argumento 1 y $2 =argumento 2. Por ejemplo, contenido y ejecucin del fichero scrpt6_arg2 :

#! /bin/sh #script para el manejo del comando shift con argumentos echo $1 $2 $3 shift echo $1 $2 $3 #./scrpt6_arg2 a b c a b c b c # _ Esta utilidad facilita el procesado de todos los argumentos en un bucle, usando una nica variable encargada de referenciar desde el primer argumento hasta el ltimo. Existen tres variables especiales asociadas al script y sus argumentos: - $#: Guarda el nmero de argumentos

- $@: Lista todos los argumentos separados por espacios - $$: Almacena el PID (identificador de proceso durante su ejecucin) Por ejemplo, contenido y ejecucin del fichero #! /bin/sh ps echo $# echo $@ echo $$ scrpt7_arg3 :

#script para presenta el valor de $#, $@ y $$

#./scrpt7_arg3 a b c ... 89 tty1 root ... 3 a b c 89 # _ Comandos de sustitucin -----------------------

624

/bin/sh ./scrpt7_arg3 a b c

Un comando de sustitucin genera la respuesta de un mandato en el sitio ocupado por su nombre dentro del script, es decir, primero el comando se llama en el script y posteriormente el resultado obtenido sustituye al comando en tiempo de ejecucin. Hay dos formas de expresar un comando de sustitucin: A) $(nombre_comando) B) `nombre_comando` (el signo "`" es el acento reflejado -a la derecha de la letra "p"-) Por ejemplo el contenido y ejecucin del fichero scrpt8 #! /bin/sh echo La fecha y hora del sistema es: $(date) echo La fecha y hora del sistema es: `date` #./scrpt8 La fecha y hora del sistema es: Fri Oct 29 18:40:17 UTC 2004 La fecha y hora del sistema es: Fri Oct 29 18:40:17 UTC 2004 # _ Expansin Aritmtica -------------------El resultado de una expresin aritmtica sustituir a esta durante el procesado de un script. Su sintaxis es: $((expresin)) Los operadores son: + suma - resta * multiplicacin sera:

/ divisin Slo puede trabajar con valores enteros. Por ejemplo, contenido y ejecucin del fichero #! /bin/sh echo $((3 * 4 / 6 + 1 - 3)) #./scrpt9 0 # _ Funciones --------Una funcin de script, igual que en otros lenguajes de programacin, representa un mtodo donde agrupar un conjunto de sentencias bajo un nombre, el nombre de la funcin. Cuando aparece este nombre en el guin, el intrprete ejecuta automticamente las rdenes asociadas. Equivaldra a un pequeo guin (admite incluso parmetros) dentro de un guin principal. La forma de escribir una funcin es: ...dentro del script... nombre_de_funcin() { Sentencia1; Sentencia2; ... SentenciaN; } Un script con funciones (y sus resultado en pantalla) sera: Ejemplo1: script10_fun1 #! /bin/sh datos() { echo "usuario actual:" $(whoami) ; echo "fecha y hora:" $(date) ; } linea() { echo "---------------------------" ; } doble_linea() { echo"============================" ; } texto() { echo $@ ; } datos scrpt9 :

linea texto saludos desde microLINUX texto texto fin del mensaje. doble_linea #--- fin del script --#./script10_fun1 usuario actual: root fecha y hora: Sat Oct 30 18:09:17 UTC 2004 ------------------------------saludos desde microLINUX fin del mensaje. =============================== # _ T A R E A S ----------1 Editar y ejecutar todos los scripts mostrados como ejemplo en la actividad. 2 Crear un script llamado encuentra.sh que busque en el rbol de directorios el fichero cuyo nombre es pasado como parmetro. 3 Realizar un script que convierta a segundos una cantidad cualquier expresada en horas. 4 Hacer un guin encargado de calcular la media aritmtica de cinco valores enteros cualesquiera y posteriormente presente por pantalla dichos valores y el resultado de la media. Nota: variar la prioridad de las operaciones usando parntesis. 5 Crear un script con funciones para ver tanto la pertenencia a usuario y a grupo de los ficheros de un directorio sealado por el usuario, como la fecha y hora del sistema y tambin el contenido del propio fichero. <->

You might also like