13 Scripts Linux

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 13 Scripts Linux as PDF for free.

More details

  • Words: 1,578
  • Pages: 17
Scripts - GNU/Linux

· Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

1

Scripts - Parámetros

El Shell ... •

Provee herramientas para manejo de variables. (Se vieron en el capítulo 11)



Permite utilizar herramientas para manejo de ciclos y para estructuras condicionales.



Además de recibir y manipular parámetros.

Parámetros ... •

Los scripts pueden recibir y manipular parámetros que son referenciados dentro de los Scripts como $1, $2, etc.



El conjunto de todos los parámetros está representado por $*.



La cantidad de parámetros está representada por $#.



El comando shift permite eliminar el primer parámetro de la lista, y correr todos los parámetros.



El comando set nos permite ver todas las variables de entorno. Pero además, nos permite asignarle valor a los parámetros. · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Ejemplos Parámetros

Ejemplo 1: echo "Cantidad de parámetros: $#" echo "Primer parámetro: $1" shift echo "Segundo parámetro $1" shift echo "El resto de los parámetros $*" Ejemplo 2: set Viva GNU Linux echo "Primer parámetro: $1" echo "Segundo parámetro: $2" echo "Tercer parámetro: $3" · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control

IF: •

Permite ejecutar un conjunto de comandos solamente si se cumple una determinada condición.



La sintaxis es. if [ condicion ]; then comandos [else comandos] fi



El else es opcional.



Los corchetes [ ] en la condición son un comando en si mismo, también llamado test. – Para más información: man test. · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

IF (Cont): •

Permite ejecutar un conjunto de comandos solamente si se cumple una determinada condición.



Las condiciones pueden ser: comando test, otros programas que devuelvan un 0 ó 1, o true o false.



Las condiciones serán de este estilo: – !condicion: Si condición es falsa. – condicion1 -a condicion2: Las dos condiciones son verdaderas. – condicion1 -o condicion2: Una de las dos condiciones es verdadera. – cadena-de-caracteres: La cadena no esta vacía. – -z cadena-de-caracteres: La cadena esta vacía. – cadena = cadena: Las dos cadenas son iguales. – cadena != cadena: Las cadenas son distintas. – entero -eq entero: Los enteros son iguales. · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control - Ejemplo IF Ejemplo IF: Envía un mensaje indicando si hay 1 o más usuarios conectados. cuantos=‘who | wc -l‘ if [ \$cuantos -gt 1 ]; then echo "Hay más de un usuario conectado" else echo "Sólo tú estás conectado" fi Comentarios: •

Primero se guarda la cantidad de usuarios conectados al sistema en la variable cuantos. – Ojo con las comillas por que nos permite utilizar la salida de los comandos en nuestro código



Luego utilizamos la estructura de if para compararlo con 1, la opción -gt del comando test significa mayor que. · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

FOR: •

Es una estructura que permite una iteración durante un número determinado de veces.



La sintaxis es: for variable in lista; do comandos done



La variable, cuando se la coloca al lado del for, no lleva el signo $ adelante, pero si en los comandos se hace referencia a ella, se debe escribir $variable.



La lista puede ser: – Una lista de números. Ej: 1 2 3 4 – Una lista de archivos. Ej: *.java – Una lista de argumentos. Ej: $* · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

FOR: •

Es una estructura que permite una iteración durante un número determinado de veces.



La sintaxis es: for variable in lista; do comandos done



La variable, cuando se la coloca al lado del for, no lleva el signo $ adelante, pero si en los comandos se hace referencia a ella, se debe escribir $variable.



La lista puede ser: – Una lista de números. Ej: 1 2 3 4 – Una lista de archivos. Ej: *.java – Una lista de argumentos. Ej: $* · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

WHILE: •

Es una estructura que permite una iteración hasta que una determinada condición no se cumpla.



La sintaxis: while [ condicion ]; do comandos done



Con respecto a la condición, es equivalente a la del if. while [ "$*" ]; do echo $1 shift done



Ojo que while espera sólo un parametro por ello las “”. · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

CASE: •

Es una estructura que permite realizar distintas acciones según el valor de una determinada variable.



La sintaxis: case $variable in patron1) comandos ;; patron2) comandos ;; esac



Con respecto al patrón: – Es similar a los metacaracteres utilizados por Shell: · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

CASE: (Cont.) •

Con respecto al patrón: (Cont.) – Es similar a los metacaracteres utilizados por Shell: (Cont.) • • • • • •



* referencia a cualquier cadena. ? referencia a caracter. [ ] referencia a un rangos. \ permite escapar valores especiales. ’ ’ permite escapar cadenas completas. | permite realizar un o (OR).

Ejemplo de Case: Modificar funcionamiento del comando “cal”. – Cal nos permite visualizar calendarios. • Por defecto nos permite ver el calendario del mes actual. • Si agregamos un número, nos muestra el calendario de ese año. • Si le agregamos 2 parámetros, nos muestra el calendario de ese año en ese mes. · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.)

CASE: (Cont.) •

Ejemplo de Case: Modificar funcionamiento del comando “cal”. (Cont.) – Problemas de cal: • No entiende nombres de meses (enero, febrero, etc). • Al ejecutar cal 10 la salida será el calendario del año 10, no del mes 10 del año actual, que es lo que esperaríamos. – Solución: • Realizar un Script que permita obtener un nuevo comando (nuevocal) que tenga estas funcionalidades.



Ver Solución.

case $# in 0) set ‘date‘ # Si no vino ningún parámetro, m=$2 # mostramos el calendario del mes actual y=$6 # y del año actual. ;; · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.) CASE: (Cont.) •

Solución: 1) m=$1 # Si vino un sólo parámetro, set ‘date‘ # mostramos el calendario de ese mes y=$6 # y del a~no actual. ;; 2) m=$1 # Si vinieron dos parámetros, y=$2 # mostramos el calendario de ese mes y a~no. ;; esac case $m in jan*|Jan*|ene*|Ene*) m=1 ;; feb*|Feb*) m=2 ;; mar*|Mar*) m=3 ;; apr*|Apr*|abr*|Abr*) m=4 ;; · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.) CASE: (Cont.) •

Solución: (Cont.) may*|May*) m=5 ;; jun*|Jun*) m=6 ;; jul*|Jul*) m=7 ;; aug*|Aug*|ago*|Ago*) m=8 ;; sep*|Sep*) m=9 ;; oct*|Oct*) m=10 ;; nov*|Nov*) m=11 ;; dec*|Dec*|dic*|Dic*) m=12 ;; [1-9]|10|11|12) ;; # El mes era numérico. *) y=$m; m=""; # Sólo vino el año. esac # Llamamos al calendario con el mes que elegimos. cal $m $y · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.) Funciones •

Una función es un conjunto de instrucciones encerradas en un bloque de código, es una caja negra que hace determinado trabajo.



Deben ser declaradas antes de poder llamarlas, y para llamarlas alcanza con tipear su nombre.



Sintaxis: # declaracion de funcion funcion () { comandos } # declaracion alternativa. function funcion { comandos } funcion # Llamado a funcion · Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

Scripts – Estructuras de Control (Cont.) Funciones (Cont.) •

Reciben sus parámetros en $1, $2, $*, etc.



Devuelven valores entre 0 y 255. – Instrucción return. – El valor que devuelven puede ser accedido en el script en la variable $?. – Normalmente, las funciones acceden a variables globales, para poder usar locales se debe usar la instrucción de shell local.



Ejercicio: – Desarrollar una calculadora que sume, multiplique y divida. – Ver solución.

· Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

¿Consultas?

· Antonio Varas 666 · Providencia, Santiago, Chile · Fono: (562) 354 04 00 · Email: [email protected] · WEb: www.duoc.cl

17

Related Documents

13 Scripts Linux
November 2019 5
11 Scripts Basicos Linux
November 2019 7
Scripts
November 2019 27
Scripts
June 2020 14
Scripts
October 2019 32
Scripts
November 2019 27