$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Documentos relacionados
Shell Script Sistemas Operativos III - ITS EMT - CETP

PHP: Lenguaje de programación

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Tema 4. Operadores y Expresiones

GUÍA BÁSICA DE SCHEME v.4

LINUX - Los archivos de órdenes I

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Operaciones básicas con hojas de cálculo

Sistemas Operativos sesión 13: shell-scripting

Lección 2 Introducción al lenguaje C

Tema 3. Aplicaciones de Tipo Consola

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Computación II. Introducción a Visual Basic

Principios de Computadoras II

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Programación en java. Estructuras algorítmicas

El lenguaje C. 1. Identificadores, constantes y variables

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

LINUX - El intérprete de órdenes II

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Programación. Test Autoevaluación Tema 3

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

4. Operadores Operador asignación

Práctica 1 de Excel (Curso )

FUNDAMENTOS DE INFORMÁTICA

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Estatutos de Control C# Estatutos de Decisión (Selección)

DIAGRAMAS DE FLUJO ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO

FUNDAMENTOS DE INFORMÁTICA

PROCESADORES DE LENGUAJE. Hoja de ejercicios de FLEX

Explicación didáctica sobre comandos de Linux: Comandos de Inicio

Operadores. Javier Fernández Rivera -

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Las fórmulas de Excel siempre comienzan por un signo igual (=) lo cual indica que los caracteres siguientes constituyen una fórmula.

Informática Ingeniería en Electrónica y Automática Industrial

Tema 2. El lenguaje JAVA

Ficha de Aprendizaje N 13

Programación shell-scripts 1 LA SHELL

Creacion de Script. Que es un Script?

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.

Identifica los tipos de datos y funciones. Tipos de Datos: Excel soporta 5 tipos de datos, estos son:

Algoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Tema: Entorno a C# y Estructuras Secuenciales.

REFERENCIA DEL LENGUAJE

Guía práctica de estudio 05: Diagramas de flujo

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Programación shell en Unix/Linux sh, ksh, bash (con ejercicios corregidos) (3ª edición)

INICIACIÓN A LA PROGRAMACIÓN II

MANUAL DE RUBY (PARTE I) Luis José Sánchez González

Sistema Operativo Linux

Datos y tipos de datos

PROGRAMACIÓN DEL SHELL

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

Expresiones y sentencias

LISTA PARA VALIDACIÓN DE DATOS EN EXCEL

UNIDAD DIDACTICA 3 REDIRECCIONAMIENTO Y TUBERIAS

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Elementos de un programa en C

Programando con el intérprete de órdenes (shell) de UNIX

Operadores y Expresiones

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Estructuras en LabVIEW.

M. en E. Noemí López García

Sintaxis básica, variables y 7pos

LEER Y ESCRIBIR ARCHIVOS DE TEXTO CON PHP. FUNCIONES FOPEN (MODOS), FGETS, FPUTS, FCLOSE Y FEOF. EJEMPLOS (CU00836B)

MATERIAL INTRODUCTORIO ORACLE 11G

Conceptos Fundamentales sobre UNIX Laboratorio Listados de Directorios con Metacaracteres (Tiempo estimado: 30 min.)

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)

INTRODUCCIÓN DE DATOS EN LA HOJA DE CÁLCULO

Curso PHP Módulo 1 R-Luis

TEMA 4. ESTRUCTURAS DE CONTROL

INICIACIÓN A LA PROGRAMACIÓN EN C

Nombres de archivo. Sistemas Operativos III - ETB EMT - CETP

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010

Opuesto de un número +3 + (-3) = (+5) = 0. N = 0,1, 2,3,4, Conjunto de los números naturales

ACTIONSCRIPT (AS) Proyectos II. Audiovisuales. Dpto. Escultura. UPV. [sintaxis elemental]

Que es el Shell? Kernel. Other programs. csh. bash. X window

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 2

FÓRMULAS Y FUNCIONES

Curso de Java Introducción a la Programación III

SEMANA N 9 NOMBRE EXPERIENCIA: Funciones, variables y arreglos en BASH UNIDAD DE APRENDIZAJE: Introducción a los SCRIPTS

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Consulta por Criterio y Expresión

4.1.- EXPRESIONES LOGICAS

Transcripción:

PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales, incorporan sentencias de control de flujo, sentencias de asignación, funciones, etc. Los programas de shell no necesitan ser compilados como ocurre en otros lenguajes. En este caso, el propio shell los ejecuta línea a línea. A estos programas se les conoce con el nombre de shell scripts y son los equivalentes a los archivos por lotes de otros sistemas operativos. PASOS A SEGUIR: Crear un archivo de texto con un editor (vi, emacs, etc.). Este archivo contendrá las órdenes que el shell va a ir interpretando y ejecutando. Asignar permisos de ejecución al archivo creado, utilizando la orden chmod. Ejecutar el script generado pasándole los parámetros necesarios./shell_script param1 param2 RECOMENDACIONES: La primera línea de cada script debe contener: Una línea de comentarios debe comenzar con el carácter #. Estos comentarios no se verán en pantalla cuando se ejecute el script. Para mostrar comentarios que luego veremos por pantalla, se utilizará el comando echo PASO DE PARÁMETROS A UN PROGRAMA DE SHELL A menudo queremos que nuestros programas de shell reciban parámetros desde la línea de órdenes para hacerlos más versátiles. Estos parámetros son lo que se conoce como parámetros de posición. Los parámetros de posición se pueden usar dentro de un programa de shell como cualquier otra variable de shell; es decir, para saber su valor utilizaremos el símbolo. Los parámetros dentro del shell script son accesibles utilizando las variables: 0 Representa al parámetro cero o nombre del programa 1 Representa al parámetro uno 2 Representa al parámetro dos 9 Representa al parámetro nueve {10} Representa al parámetro diez {11} Representa al parámetro once Ejemplo1: echo El nombre del programa es 0 echo El primer parámetro recibido es 1 echo El segundo parámetro recibido es 2 echo El tercer parámetro recibido es 3 echo El cuarto parámetro recibido es 4 ALGUNAS VARIABLES ESPECIALES DEL SHELL # Número de parámetros que han pasado a la shell. 1

* Un argumento que contiene todos los parámetros que se han pasado (1, 2...) menos el 0.? Número donde se almacena el código de error del último comando que se ha ejecutado. Número de proceso actual (PID)! Último número de proceso ejecutado. Ejemplo2: echo El nombre del programa es 0 echo El número total de parámetros es # echo Todos los parámetros recibidos son * echo El primer parámetro recibido es 1 echo El segundo parámetro recibido es 2 echo El tercer parámetro recibido es 3 echo El cuarto parámetro recibido es 4 shift Sintaxis: shift n Esta orden se utiliza para desplazar los argumentos, de manera que 2 pasa a ser 1, 3 pasa a ser 2, y así sucesivamente (esto si el desplazamiento n es igual a 1). Es muy utilizada dentro de los bucles. Ejemplo3: #Este script se llama ej_shift2 echo El nombre del programa es: 0 echo El número total de parámetros es: # echo Todos los parámetros recibidos son: * echo El primer parámetro recibido es: 1 echo El segundo parámetro recibido es: 2 echo El tercer parámetro recibido es: 3 echo El cuarto parámetro recibido es: 4 shift 2 echo Ahora el parámetro \1 vale: 1 echo Ahora el parámetro \2 vale: 2 echo Ahora el parámetro \3 vale: 3 echo Ahora el parámetro \4 vale: 4 echo El número total de parámetros es: # echo Todos los parámetros recibidos son: * Mostrará el siguiente resultado:./ej_shift2 uno dos tres cuatro cinco seis El nombre del programa es:./ej_shift2 El número total de parámetros es: 6 2

Todos los parámetros recibidos son: uno dos tres cuatro cinco seis El primer parámetro recibido es: uno El segundo parámetro recibido es: dos El tercer parámetro recibido es: tres El cuarto parámetro recibido es: cuatro Ahora el parámetro \1 vale: tres Ahora el parámetro \2 vale: cuatro Ahora el parámetro \3 vale: cinco Ahora el parámetro \4 vale: seis El número total de parámetros es: 4 Todos los parámetros recibidos son: tres cuatro cinco seis La orden shift desplaza todas las cadenas en * a la izquierda n posiciones y decrementa # en n. Si a shift no se le indica el valor de n, por defecto tomará el valor 1. La orden shift no afecta al parámetro de posición 0 o nombre del programa. read Sintaxis: read variable (s) La orden read se usa para leer información escrita en el terminal de forma interactiva. Si hay más variables en la orden read que palabras escritas, las variables que sobran por la derecha se asignan a NULL. Si se introducen más palabras que variables haya, todos los datos que sobran por la derecha se asignan a la última variable de la lista. Ejemplo4: #script ej_read #La opción n se emplea para evitar el retorno de carro echo n Introduce una variable: read var echo La variable introducida es: var Ejemplo5: #script ej_read_var que lee varias variables con read echo n Introduce las variables: read var1 var2 var3 echo Las variables introducidas son: echo var1 = var1 echo var2 = var2 echo var3 = var3 Si ejecutamos el Ejemplo5 sólo con dos parámetros podemos observar que la variable var3 queda sin asignar, puesto que solo hemos introducido dos valores:./ej_read_var Introduce las variables: uno dos Las variables introducidas son: var1 = uno 3

var2 = dos var3 = A continuación ejecutamos el Ejemplo5 con cuatro parámetros y podemos observar que a la variable var3 se le asignan todas las variables a partir de la dos../ej_read_var Introduce las variables: uno dos tres cuatro Las variables introducidas son: var1 = uno var2 = dos var3 = tres cuatro expr Sintaxis: expr arg1 op arg2 [op arg3 ] Los argumentos de la order expr se toman como expresiones y deben ir separados por blancos. La orden expr evalúa sus argumentos y escribe el resultado en la salida estándar. El uso más común de esta orden es para efectuar operaciones de aritmética simple y, en menor medida, para manipular cadenas. Operadores aritméticos + Suma arg2 a arg1 - Resta arg2 a arg1 * Multiplica los argumentos / Divide arg1 entre arg2 (división entera) % Resto de la división entera entre arg1 y arg2 En el caso de utilizar varios operadores, las operaciones de suma y resta se evalúan en último lugar, a no se que vayan entre paréntesis. No hay que olvidar que los símbolos *, ( y ) tienen un significado especial para el shell y deben ser precedidos por el símbolo backslash ( \ ) o encerrados entre comillas simples. Ejemplo6: #script que multiplica dos variables leídas desde teclado echo Multiplicación de dos variables echo ------------------------------- echo n Introduce la primera variable: read var1 echo n Introduce la segunda variable: read var2 resultado=`expr var1 \* var2` echo El resultado de la multiplicación es =resultado El resultado de ejecutar el programa anterior es el producto de las dos variables leídas desde el teclado. Operadores relacionales Estos operadores se utilizan para comparar dos argumentos. Los argumentos pueden ser también palabras. Si el resultado de la comparación es cierto, el resultado es uno (1); si es falso, el resultado es cero (0). Estos operadores se utilizan mucho para comparar operandos y tomar decisiones en función de los resultados de la comparación. Los distintos tipos de operadores relacionales son: 4

= Son los argumentos iguales?!= Son los argumentos distintos? > Es arg1 mayor que arg2? >= Es arg1 mayor o igual que arg2? < Es arg1 menor que arg2? <= Es arg1 menor o igual que arg2? Los símbolos > y < tienen significado especial para el shell, por lo que deben ser entrecomillados. Ejemplo7: #El script se llama ejemplo7 #script que determina si dos variables leídas desde teclado son iguales o no echo Son iguales las variables? echo -------------------------- echo n Introduce la primera variable: read var1 echo n Introduce la segunda variable: read var2 resultado=`expr var1 = var2` echo Resultado=resultado El programa anterior devolverá 0 si las dos variables introducidas son distintas y 1 si son iguales. Veamos la ejecución de Ejemplo7:./ejemplo7 Son iguales las variables? --------------------------- Introduce la primera variable: dato Introduce la segunda variable: dato Resultado=1 Si las variables fuesen distintas, el resultado sería:./ejemplo7 Son iguales las variables? --------------------------- Introduce la primera variable: 123 Introduce la segunda variable: 45 Resultado=0 Operadores lógicos Estos operadores se utilizan para comparar dos argumentos. Dependiendo de los valores, el resultado puede ser arg1 (o alguna parte de él), arg2 o cero. Como operadores lógicos tenemos los siguientes: Or lógico. Si el valor de arg1 es distinto de cero, el resultado es arg1; si no es así, el resultado es arg2. & And lógico. Si arg1 y arg2 son distintos de cero, el resultado es arg1; si no es así, el resultado es arg2. : El arg2 es el patrón buscado en arg1. Si el patrón arg2 está encerrado dentro de paréntesis \( \), el resultado es la parte de arg1 que coincide con arg2. Si no es así, el resultado es simplemente el número de caracteres que coinciden. 5

No debemos olvidar que los símbolos y & deben ser entrecomillados o precedidos del símbolo \, por tener un significado especial para el shell. Ejemplo8: En este ejemplo incrementamos en una unidad el valor de la variable a. a=5 a=`expr a + 1 ` echo a 6 Ejemplo9: En este ejemplo calculamos el número de caracteres de la cadena a. a=palabra b=`expr a :.* ` echo b 7 Ejemplo10: En este ejemplo determinamos cuáles son los caracteres comprendidos entre la a y la z minúsculas en la cadena a. a=febrero_1998 b=`expr a : \([a-z]*\) ` echo b ebrero test (evaluación de archivos) Sintaxis: test opcion archivo test [ expresión ] La orden test se usa para evaluar expresiones y genera un valor de retorno; este valor no se escribe en la salida estándar, pero asigna 0 al código de retorno si la expresión se evalúa como true, y le asigna 1 si la expresión se evalúa como false. Cuando se invoque la orden test mediante la segunda sintaxis, hay que dejar un espacio en blanco entre los corchetes. La orden test puede evaluar tres tipos de elementos: archivos, cadenas y números. Opciones: -f Devuelve verdadero (0) si el archivo existe y es un archivo regular (no es un directorio ni un archivo de dispositivo). -s Devuelve verdadero (0) si el archivo existe y tiene un tamaño mayor que cero. -r Devuelve verdadero (0) si el archivo existe y tiene un permiso de lectura. -w Devuelve verdadero (0) si el archivo existe y tiene un permiso de escritura. -x Devuelve verdadero (0) si el archivo existe y tiene un permiso de ejecución. -d Devuelve verdadero (0) si el archivo existe y es un directorio. Ejemplo11: test f archivo32 echo? 1 (El archivo archivo32 no existe) test f /etc/passwd echo? 0 (El archivo /etc/passwd sí existe) test (evaluación de cadenas) 6

Sintaxis: [ cadena1 = cadena2 ] [ cadena1!= cadena2 ] Ejemplo12: a=palabra1 [ a = palabra2 ] echo? 1 [ a = palabra1 ] echo? 0 De esta manera, test evalúa si las cadenas son iguales o distintas. test (evaluaciones numéricas) Sintaxis: número relación número En evaluaciones numéricas, esta orden es sólo válida con números enteros. Los operadores usados para comparar números son diferentes de los usados para comparar cadenas. Estos operadores son: -lt Menor que -le Menor o igual que -gt Mayor que -ge Mayor o igual que -eq Igual a -ne No igual a Hay unos cuantos operadores que son válidos en una expresión de la orden test a la hora de evaluar tanto archivos como cadenas o números. Estos operadores son llamados conectores y son: -o OR -a AND! NOT 7