SlideShare una empresa de Scribd logo
1 de 50
PROGRAMACIÓN DE SHELL
SCRIPTS
1
INTRODUCCIÓN
• La idea es combinar secuencias de comandos de
Linux para realizar determinadas tareas.
• Con shell scripts podremos definir variables y
asignarle valores o permitir que un usuario inserte
valores de forma interactiva.
• Dispondremos de bucles y estructuras de control
para realizar operaciones aritméticas o de
comparación.
• También podremos tener varios shells scripts
ejecutándose al mismo tiempo.
2
Variables de entorno
• Una variable de entorno es un objeto
designado para contener información usada
por una o más aplicaciones.
• Usando variables de entorno podemos
cambiar una opción de configuración para una
o más aplicaciones fácilmente.
3
Variables de entorno
VARIABLE DESCRIPCIÓN
PATH Esta variable contiene una lista de directorios separados
por “:” en la cual el sistema buscará los archivos
ejecutables.
LOGNAME Esta variable contiene nuestro nombre de usuario.
HOME Camino absoluto al directorio LOGIN del usuario.
PS1 Es el carácter de prompt inicial “$”.
PS2 Continuación del prompt, “>”
SHELL Contiene el nombre de la shell que estamos usando
4
Variables de usuario
• Para referirse al valor de una variable debemos
anteponer a su nombre el signo de $, ej: $nom, así
la shell sustituye $nom por el valor que tenga
asignado esa variable.
• Por ejemplo podemos saber qué shell estamos
usando y qué usuario somos escribiendo la línea:
$ echo Mi nombre de usuario es $LOGNAME y
utilizo como shell predeterminada $SHELL.
5
Variables de usuario
• Una variable es un identificador, y en Linux por defecto
son de tipo carácter.
• Para asignar un valor, se escribe el nombre seguido de
un símbolo de =, seguido del valor.
• No deben existir espacios en blanco entre el signo de
igual y el nombre de la variable ó el valor.
• El nombre de una variable no puede empezar por un
número.
• Las variables de shell existen mientras la shell esté
activa. Al salir de la sesión se terminará la shell de inicio
de sesión y al volver a iniciar la sesión tendremos que
definir nuevamente cualquier variable que hayamos
definido anteriormente.
6
Ejemplos
• Defina las siguientes variables:
a=hola
b=2000
texto=“ la hora actual es: “
Para visualizar el valor de las variables:
echo $a
echo $texto $b
7
Ejercicios
1) Ejercicio: Defina una variable llamada “nom”, con
su nombre y otra “ape” con su apellido, a
continuación muestre por pantalla el mensaje “Mi
nombre completo es Fulano de Tal”, utilizando las
variables que acaba de declarar.
2) Crear un directorio llamado “tablas”, dentro un
archivo llamado “t1”, con 5 registros (Nombre,
Apellido, Edad, Dirección). Vuelva a su directorio
personal y declare una variable con la ruta a “t1”
corte la segunda y la última columna del “t1”
utilizando la variable que acaba de declarar, en
lugar de la ruta.
8
Variables
• Para obtener una lista de todas las variables
podemos utilizar el comando “set”.
• Para eliminar una variable podemos usar el
comando “unset”, seguido del nombre de la
variable.
9
Valores de variables
• Pueden ser cadenas de caracteres.
• El resultado de ejecutar un comando.
• Puede incluir caracteres especiales como el *, en el
nombre de una variable usando comillas dobles o
simples, o backslash para anular significados especiales.
• Si lo que queremos es utilizar el metacaracter asterisco
o ejecutar un comando entonces debemos usar
comillas ivnertidas.
• Sin embargo las comillas dobles no convierten en texto
el signo de pesos. Todavía se evalúa un nombre de
variable encerrado en comillas dobles, remplazándolo
con el valor de la variable. El valor de la variable
después se volverá parte de la cadena de comandos.
10
Valores de variables
• Las comillas sencillas suprimen cualquier evaluación
de variable y tratan al signo de pesos como otro
carácter.
• Ejemplo: ganador=daniel
• resultado=‘El nombre está en $ganador’
• echo $resultado
• El nombre está en $ganador.
• Además podemos usar la diagonal invertida para
convertir en texto cualquier metacaracter.
• Ej: resultado=“$ganador ganó $10000”
11
Valores de variables
• Podemos asignar el resultado de un comando
a una variable (como una forma de definir un
alias), utilizando comillas sencillas. Para
ejecutarlo usamos $ pero no echo.
• Ej: $ lsal=‘ls – l’
• Con $lsal ejecutamos el comando.
12
Comillas invertidas
• Para asignar el resultado de los comandos a
una variable, primero necesitamos ejecutar el
comando. Al colocar un comando entre
comillas invertidas se ejecutará primero este
comando y su resultado es lo que se asigna a
la variable. Aquí podemos utilizar
metacaracters y filtros con expresiones
regulares. Es necesario usar echo.
13
Nuestros primeros programas
• Para crear un shell script primero creamos un
archivo de texto con un editor (vi, emacs o
gedit, por ejemplo). Este archivo contendrá las
órdenes que la shell va a ir interpretando y
ejecutando.
• Luego de creado el archivo es necesario darle
permiso de ejecución, con chmod. Hecho eso
podemos ejecutarlo como cualquier orden.
14
Primer programa
1) Elegir un nombre para el programa.
2) Editarlo con vi. Ej. vi prog1
3) Generaremos el siguiente archivo:
#########
# Prueba #
#########
who
date
4) Guardamos los cambios, salimos del editor.
5) Damos al archivo prog1 permiso de ejecución.
$ chmod u+x prog1
6) Ejecutamos el programa, igual que lo hacemos con
cualquier otro. 15
¿Qué puede pasar?
• En caso de que el directorio actual no esté
incluido en el PATH será necesario invocar el
shell script anteponiendo la cadena ./ y a
continuación sin espacio en blanco el nombre
del programa.
• Los comentarios comienzan con el carácter #.
• Si queremos que los caracteres especiales
como $ o ? no sean interpretados por la shell
debemos anteponer la backslash .
16
El comando read
• Utilidad: leer información escrita en la línea de
comandos de forma interactiva.
• Si hay más variables en la orden read que palabras
escritas, las variables que sobran por la derecha se
asignarán a NULL. Si se introducen más palabras
que variables haya, todos los datos que sobran por
la derecha se asignarán a la última variable de la
lista.
• El siguiente ejemplo lee una variable desde el
teclado y la muestra por pantalla:
17
#######################################
# Programa que lee desde la entrada estándar #
#######################################
echo –n Ingrese un valor:
read var #se pueden poner más variables
echo La variable ingresada es: $var
Ejercicio: Crear un programa que lea tres variables y
las muestre por pantalla una debajo de la otra.
Probarlo con 3 variables, luego con 2 y por último con
4.
18
Comando expr
• Sintaxis: expr arg1 op arg2 [op arg3…..]
• Los argumentos de este comando se toman como
expresiones y deben ir separados por blancos. Expr
evalúa sus argumentos y escribe el resultado en la
salida estándar. El uso más común de expr es para
efectuar operaciones aritméticas simples, y en
menor medida para manipular cadenas (averiguar
la longitud de una cadena, filtrar determinados
caracteres de una cadena, etc)
19
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 usar varios operadores, las operaciones de
suma y resta se evalúan en último lugar, a no ser que
vayan entre paréntesis. No olvidar que los símbolos como
el * tienen un significado especial, por lo que deben ser
precedidos por el símbolo backslash o encerrados entre
comillas simples.
20
Ejercicio
• Crear el programa multi que efectúa la
multiplicación de dos variables ingresadas desde el
teclado.
• echo –n Ingrese primer valor:
• read v1
• echo –n Ingrese segundo valor:
• read v2
• result=`expr $v1 * $v2`
• echo $v1 * $v2 = $result
21
El comando let
• Otra manera de realizar operaciones
aritméticas es mediante el uso del comando
let.
• La forma más directa de entender cómo
funciona let es a través de un ejemplo:
num=5
let num2=$num*8
echo $num2
22
Operadores relacionales
• En Linux tenemos 2 tipos de operadores
relacionales que quieren decir lo mismo pero tienen
usos diferentes.
• Para realizar comparaciones de cadenas de
caracteres los operadores relacionales son:
• =; !=; >; >=; < y <=
• Aquí el operador > aplicado entre dos argumentos
que son cadenas de caracteres, quiere decir que el
elemento que está a la izquierda está ubicado
después que el que está a la derecha,
alfabéticamente. 23
Operadores relacionales aritméticos
Para diferenciar un caso de otro Linux nos
proporciona operadores relacionales aritméticos.
24
Operadores
-lt (<) -ge (>=)
-gt (>) -eq (==)
-le (<=) -ne (!=)
Ejercicios
1) Escribir un programa que pida al usuario dos
números por pantalla, los muestre y realice la
suma de los mismos.
2) Escribe un programa que pida dos variables y
devuelva 1 si son iguales o 0 si son distintas. Pista:
puede utilizar expr, igual que en el ejemplo
anterior y recuerde que el resultado de la
comparación es 1 si se cumple la condición
planteada o 0 si no se cumple.
3) Modifica el programa anterior para comprobar si el
primer número es mayor que el segundo.
25
Evaluaciones
• Sirven para averiguar el valor lógico de una
expresión. Generalmente se combina con una
instrucción de bifurcación como if.
• Test para archivos:
• Sintaxis: test –opción argumento
• Test evalúa expresiones y genera un valor de
retorno que no se escribe en la salida estánar, pero
asigna 0 si la expresión es verdadera o 1 si es falsa.
Test puede evaluar 3 tipos de elementos: archivos,
cadenas y números. Si usamos paréntesis rectos hay
que dejar espacio tanto a la izquierda como a la
derecha de la expresión. 26
• Opciones:
- f Devuelve 0 si el archivo existe y es un archivo común.
- s Devuelve 0 si el archivo existe y su tamaño es > 0.
- r Devuelve 0 si el archivo existe y tiene permiso de
lectura.
Para evaluar cadenas:
• Sintaxis: test cadena1 operador cadena2 Ó [cadena1
operador cadena2]
• Ejemplos: a=palabra1
[ $a = palabra2]
echo $?
Probarlo e interpretar.
27
• De esta manera podemos evaluar si dos cadenas
son iguales o no.
test para evaluaciones numéricas
Sintaxis: test número1 operador número2 ó también
[ número1 operador número2 ]
Este comando es sólo valido con números enteros.
Los operadores usados para comparar números son:
-lt Menor que -le Menor o igual que
-gt Mayro que -ge Mayor o igual que
-eq Igual a -ne No es igual a
28
Ejemplos
• a=23
• [ $a –lt 55 ]
• echo $?
Probarlo
test $a != 23
echo $?
Probarlo
29
Comando sleep
• Utilidad: Hace una pausa durante un número
determinado de segundos antes de continuar
con lo siguiente.
• Sintaxis:
sleep n° segundos
30
Estructura condicional if
• Sintaxis:
if condición1
then
acciones
else
acciones
fi
31
Ejemplo if de comparación de cadenas
#! /bin/bash
palabra=geoda
read –p “Ingrese una palabra: “ pal
if [ $pal > $palabra ]
then
echo La cadena es alfabéticamente posterior.
else
if [ $pal < $palabra ]
then
echo La cadena es alfabéticamente anterior.
else
echo Las palabras son iguales.
fi
fi 32
Ejemplo if operadores aritméticos
• Crear un programa que me avise si el número ingresado es mayor,
menor o igual a 10.
#! /bin/bash
clear
read –p “Ingrese un valor: “ op
if [ $a -gt 10 ]
then
echo El número ingresado es mayor a 10
else
if [ $a -lt 10 ]
then
echo el número ingresado es menor a 10
else
echo el número ingresado es 10.
fi
fi 33
Ejercicio
• Crear un programa que le pida a un usuario
que ingrese el número 1 para realizar la suma
de 2 valores o el número 2 para realizar la
resta de los mismos.
34
Solución
#! /bin/bash
clear
read –p “Ingrese 1 para sumar o 2 para restar: “ op
if [ $op -eq 1 ]
then
read –p “Ingrese primer valor: “ a
read –p “Ingrese segundo valor: “b
else
sum=`expr $a + $b` # ó let sum=$a+$b
echo el resultado de la suma es $sum
else
35
SIGUE 
if [ $op -eq 2 ]
then
read –p “Ingrese primer valor: “ a
read –p “Ingrese segundo valor: “ b
res=`exp $c - $d` # ó let res=$a-$b
echo El resultado de la resta es $res
else
echo No ha ingresado un valor válido
fi
fi
sleep 1 36
Case
case expresión in
caso 1) comandos;;
caso 2) comandos;;
……..
*) default;;
esac
37
Ejemplo de case con menu
#! /bin/bash
clear
echo “
MENU
1) Listar archivos comunes
2) Listar directorios
“
read –p “Ingrese la opción deseada: “ op
38
SIGUE 
Ejemplo de case con menú
case $op in
1) ls –l | grep ^-;;
2) ls –l | grep ^d;;
*) echo Opción inválida;;
esac
sleep 2
39
Ejercicio de case
• Escribir un programa que despliegue un menú
en pantalla y le pida a un usuario que elija 1
de las operaciones matemáticas básicas.
• Si la opción ingresada no es válida el programa
deberá terminar su ejecución, avisando al
usuario del problema.
40
WHILE
Sintaxis:
while condición
do
orden (es)
done
41
La ejecución del while es:
1) Se evalúa la condición
2) Si el código devuelto por la condición es 0
(verdadero), se ejecutará la orden u órdenes y se
vuelve a iterar.
3) Si el código de retorno de la condición es falso, se
saltará la primera orden que haya después de la
palabra done. 42
Ejemplo
#! /bin/bash
a=42
while [ $a –le 53 ]
do
echo Contador = $a
a=`expr $a + 1`
done
43
Ejercicio
Modifique el ejercicio de las operaciones
aritméticas para que un usuario pueda hacer
todas las operaciones que quiera, hasta que
ingrese un valor de terminación.
44
45
Respuesta:
Es muy fácil:
Hay que poner el while al principio, con la
siguiente condición: [ “$op” != 0 ], porque
aún no hemos ingresado la opción y las comillas
quieren decir cadena vacía. Una cosa es poner
cadena vacía y otra cosa es no poner nada. Si
no hay comillas larga error.
Luego va el do, todo el programa en el medio,
agregando una opción para el cero por ejemplo.
Y al final de todo el done.
Incrementar un contador con let
#! /bin/bash
cont=0
max=20
while [ $cont –lt $max ]
do
let cont=cont+1
echo el contador es $cont
done
46
Sobre las condiciones de las
estructuras
• La condición de un if puede ser en realidad
cualquier comando.
• El resultado de la ejecución de ese comando
se guarda en una variable especial del sistema
que se llama ?. Y esta variable toma el valor 0
si el comando tiene éxito y distinto de 0 si no
tiene éxito.
• Veámoslo con un ejemplo:
47
Otro ejemplo de if
if cp /home/pepe/* .
then
echo se copió correctamente
else
echo error
fi
48
Otro ejemplo del mismo estilo
if grep $nom agenda.txt
then
echo el nombre ya existe.
………
else
echo –n Ingrese apellido:
fi
49
Sobre la sintaxis del case
case $ op in
casa | CASA) acciones;;
3) acciones;;
[a-z]) acciones;;
*) acciones
esac
Nota: como acabamos de ver podemos poner lo que
queramos en los casos del case, y no
necesariamente 1, 2, 3, etc. 50

Más contenido relacionado

Similar a Shell Scripts: Introducción a las variables y operaciones básicas

Similar a Shell Scripts: Introducción a las variables y operaciones básicas (20)

Taller completo
Taller completoTaller completo
Taller completo
 
Php
PhpPhp
Php
 
Manuales ...
Manuales ...Manuales ...
Manuales ...
 
Trabajo case
Trabajo caseTrabajo case
Trabajo case
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Ambiente
 Ambiente Ambiente
Ambiente
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambiente de programacin en pascal
Ambiente de programacin en pascalAmbiente de programacin en pascal
Ambiente de programacin en pascal
 
Ambiente de programación en pascal
Ambiente de programación en pascalAmbiente de programación en pascal
Ambiente de programación en pascal
 
Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02Ambientedeprogramacinenpascal 111015091809-phpapp02
Ambientedeprogramacinenpascal 111015091809-phpapp02
 
Introducción a shell script
Introducción a shell scriptIntroducción a shell script
Introducción a shell script
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
conceptos basicos lenguajes de programacion.pdf
conceptos basicos lenguajes de programacion.pdfconceptos basicos lenguajes de programacion.pdf
conceptos basicos lenguajes de programacion.pdf
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Comandos de Raptor,C# y Java
Comandos de Raptor,C# y JavaComandos de Raptor,C# y Java
Comandos de Raptor,C# y Java
 
Php basico
Php basicoPhp basico
Php basico
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Estructura básica de un programa en C++
Estructura básica de un programa en C++Estructura básica de un programa en C++
Estructura básica de un programa en C++
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3
 
Introduccion a Matlab
Introduccion a MatlabIntroduccion a Matlab
Introduccion a Matlab
 

Último

texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 

Último (20)

texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 

Shell Scripts: Introducción a las variables y operaciones básicas

  • 2. INTRODUCCIÓN • La idea es combinar secuencias de comandos de Linux para realizar determinadas tareas. • Con shell scripts podremos definir variables y asignarle valores o permitir que un usuario inserte valores de forma interactiva. • Dispondremos de bucles y estructuras de control para realizar operaciones aritméticas o de comparación. • También podremos tener varios shells scripts ejecutándose al mismo tiempo. 2
  • 3. Variables de entorno • Una variable de entorno es un objeto designado para contener información usada por una o más aplicaciones. • Usando variables de entorno podemos cambiar una opción de configuración para una o más aplicaciones fácilmente. 3
  • 4. Variables de entorno VARIABLE DESCRIPCIÓN PATH Esta variable contiene una lista de directorios separados por “:” en la cual el sistema buscará los archivos ejecutables. LOGNAME Esta variable contiene nuestro nombre de usuario. HOME Camino absoluto al directorio LOGIN del usuario. PS1 Es el carácter de prompt inicial “$”. PS2 Continuación del prompt, “>” SHELL Contiene el nombre de la shell que estamos usando 4
  • 5. Variables de usuario • Para referirse al valor de una variable debemos anteponer a su nombre el signo de $, ej: $nom, así la shell sustituye $nom por el valor que tenga asignado esa variable. • Por ejemplo podemos saber qué shell estamos usando y qué usuario somos escribiendo la línea: $ echo Mi nombre de usuario es $LOGNAME y utilizo como shell predeterminada $SHELL. 5
  • 6. Variables de usuario • Una variable es un identificador, y en Linux por defecto son de tipo carácter. • Para asignar un valor, se escribe el nombre seguido de un símbolo de =, seguido del valor. • No deben existir espacios en blanco entre el signo de igual y el nombre de la variable ó el valor. • El nombre de una variable no puede empezar por un número. • Las variables de shell existen mientras la shell esté activa. Al salir de la sesión se terminará la shell de inicio de sesión y al volver a iniciar la sesión tendremos que definir nuevamente cualquier variable que hayamos definido anteriormente. 6
  • 7. Ejemplos • Defina las siguientes variables: a=hola b=2000 texto=“ la hora actual es: “ Para visualizar el valor de las variables: echo $a echo $texto $b 7
  • 8. Ejercicios 1) Ejercicio: Defina una variable llamada “nom”, con su nombre y otra “ape” con su apellido, a continuación muestre por pantalla el mensaje “Mi nombre completo es Fulano de Tal”, utilizando las variables que acaba de declarar. 2) Crear un directorio llamado “tablas”, dentro un archivo llamado “t1”, con 5 registros (Nombre, Apellido, Edad, Dirección). Vuelva a su directorio personal y declare una variable con la ruta a “t1” corte la segunda y la última columna del “t1” utilizando la variable que acaba de declarar, en lugar de la ruta. 8
  • 9. Variables • Para obtener una lista de todas las variables podemos utilizar el comando “set”. • Para eliminar una variable podemos usar el comando “unset”, seguido del nombre de la variable. 9
  • 10. Valores de variables • Pueden ser cadenas de caracteres. • El resultado de ejecutar un comando. • Puede incluir caracteres especiales como el *, en el nombre de una variable usando comillas dobles o simples, o backslash para anular significados especiales. • Si lo que queremos es utilizar el metacaracter asterisco o ejecutar un comando entonces debemos usar comillas ivnertidas. • Sin embargo las comillas dobles no convierten en texto el signo de pesos. Todavía se evalúa un nombre de variable encerrado en comillas dobles, remplazándolo con el valor de la variable. El valor de la variable después se volverá parte de la cadena de comandos. 10
  • 11. Valores de variables • Las comillas sencillas suprimen cualquier evaluación de variable y tratan al signo de pesos como otro carácter. • Ejemplo: ganador=daniel • resultado=‘El nombre está en $ganador’ • echo $resultado • El nombre está en $ganador. • Además podemos usar la diagonal invertida para convertir en texto cualquier metacaracter. • Ej: resultado=“$ganador ganó $10000” 11
  • 12. Valores de variables • Podemos asignar el resultado de un comando a una variable (como una forma de definir un alias), utilizando comillas sencillas. Para ejecutarlo usamos $ pero no echo. • Ej: $ lsal=‘ls – l’ • Con $lsal ejecutamos el comando. 12
  • 13. Comillas invertidas • Para asignar el resultado de los comandos a una variable, primero necesitamos ejecutar el comando. Al colocar un comando entre comillas invertidas se ejecutará primero este comando y su resultado es lo que se asigna a la variable. Aquí podemos utilizar metacaracters y filtros con expresiones regulares. Es necesario usar echo. 13
  • 14. Nuestros primeros programas • Para crear un shell script primero creamos un archivo de texto con un editor (vi, emacs o gedit, por ejemplo). Este archivo contendrá las órdenes que la shell va a ir interpretando y ejecutando. • Luego de creado el archivo es necesario darle permiso de ejecución, con chmod. Hecho eso podemos ejecutarlo como cualquier orden. 14
  • 15. Primer programa 1) Elegir un nombre para el programa. 2) Editarlo con vi. Ej. vi prog1 3) Generaremos el siguiente archivo: ######### # Prueba # ######### who date 4) Guardamos los cambios, salimos del editor. 5) Damos al archivo prog1 permiso de ejecución. $ chmod u+x prog1 6) Ejecutamos el programa, igual que lo hacemos con cualquier otro. 15
  • 16. ¿Qué puede pasar? • En caso de que el directorio actual no esté incluido en el PATH será necesario invocar el shell script anteponiendo la cadena ./ y a continuación sin espacio en blanco el nombre del programa. • Los comentarios comienzan con el carácter #. • Si queremos que los caracteres especiales como $ o ? no sean interpretados por la shell debemos anteponer la backslash . 16
  • 17. El comando read • Utilidad: leer información escrita en la línea de comandos de forma interactiva. • Si hay más variables en la orden read que palabras escritas, las variables que sobran por la derecha se asignarán a NULL. Si se introducen más palabras que variables haya, todos los datos que sobran por la derecha se asignarán a la última variable de la lista. • El siguiente ejemplo lee una variable desde el teclado y la muestra por pantalla: 17
  • 18. ####################################### # Programa que lee desde la entrada estándar # ####################################### echo –n Ingrese un valor: read var #se pueden poner más variables echo La variable ingresada es: $var Ejercicio: Crear un programa que lea tres variables y las muestre por pantalla una debajo de la otra. Probarlo con 3 variables, luego con 2 y por último con 4. 18
  • 19. Comando expr • Sintaxis: expr arg1 op arg2 [op arg3…..] • Los argumentos de este comando se toman como expresiones y deben ir separados por blancos. Expr evalúa sus argumentos y escribe el resultado en la salida estándar. El uso más común de expr es para efectuar operaciones aritméticas simples, y en menor medida para manipular cadenas (averiguar la longitud de una cadena, filtrar determinados caracteres de una cadena, etc) 19
  • 20. 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 usar varios operadores, las operaciones de suma y resta se evalúan en último lugar, a no ser que vayan entre paréntesis. No olvidar que los símbolos como el * tienen un significado especial, por lo que deben ser precedidos por el símbolo backslash o encerrados entre comillas simples. 20
  • 21. Ejercicio • Crear el programa multi que efectúa la multiplicación de dos variables ingresadas desde el teclado. • echo –n Ingrese primer valor: • read v1 • echo –n Ingrese segundo valor: • read v2 • result=`expr $v1 * $v2` • echo $v1 * $v2 = $result 21
  • 22. El comando let • Otra manera de realizar operaciones aritméticas es mediante el uso del comando let. • La forma más directa de entender cómo funciona let es a través de un ejemplo: num=5 let num2=$num*8 echo $num2 22
  • 23. Operadores relacionales • En Linux tenemos 2 tipos de operadores relacionales que quieren decir lo mismo pero tienen usos diferentes. • Para realizar comparaciones de cadenas de caracteres los operadores relacionales son: • =; !=; >; >=; < y <= • Aquí el operador > aplicado entre dos argumentos que son cadenas de caracteres, quiere decir que el elemento que está a la izquierda está ubicado después que el que está a la derecha, alfabéticamente. 23
  • 24. Operadores relacionales aritméticos Para diferenciar un caso de otro Linux nos proporciona operadores relacionales aritméticos. 24 Operadores -lt (<) -ge (>=) -gt (>) -eq (==) -le (<=) -ne (!=)
  • 25. Ejercicios 1) Escribir un programa que pida al usuario dos números por pantalla, los muestre y realice la suma de los mismos. 2) Escribe un programa que pida dos variables y devuelva 1 si son iguales o 0 si son distintas. Pista: puede utilizar expr, igual que en el ejemplo anterior y recuerde que el resultado de la comparación es 1 si se cumple la condición planteada o 0 si no se cumple. 3) Modifica el programa anterior para comprobar si el primer número es mayor que el segundo. 25
  • 26. Evaluaciones • Sirven para averiguar el valor lógico de una expresión. Generalmente se combina con una instrucción de bifurcación como if. • Test para archivos: • Sintaxis: test –opción argumento • Test evalúa expresiones y genera un valor de retorno que no se escribe en la salida estánar, pero asigna 0 si la expresión es verdadera o 1 si es falsa. Test puede evaluar 3 tipos de elementos: archivos, cadenas y números. Si usamos paréntesis rectos hay que dejar espacio tanto a la izquierda como a la derecha de la expresión. 26
  • 27. • Opciones: - f Devuelve 0 si el archivo existe y es un archivo común. - s Devuelve 0 si el archivo existe y su tamaño es > 0. - r Devuelve 0 si el archivo existe y tiene permiso de lectura. Para evaluar cadenas: • Sintaxis: test cadena1 operador cadena2 Ó [cadena1 operador cadena2] • Ejemplos: a=palabra1 [ $a = palabra2] echo $? Probarlo e interpretar. 27
  • 28. • De esta manera podemos evaluar si dos cadenas son iguales o no. test para evaluaciones numéricas Sintaxis: test número1 operador número2 ó también [ número1 operador número2 ] Este comando es sólo valido con números enteros. Los operadores usados para comparar números son: -lt Menor que -le Menor o igual que -gt Mayro que -ge Mayor o igual que -eq Igual a -ne No es igual a 28
  • 29. Ejemplos • a=23 • [ $a –lt 55 ] • echo $? Probarlo test $a != 23 echo $? Probarlo 29
  • 30. Comando sleep • Utilidad: Hace una pausa durante un número determinado de segundos antes de continuar con lo siguiente. • Sintaxis: sleep n° segundos 30
  • 31. Estructura condicional if • Sintaxis: if condición1 then acciones else acciones fi 31
  • 32. Ejemplo if de comparación de cadenas #! /bin/bash palabra=geoda read –p “Ingrese una palabra: “ pal if [ $pal > $palabra ] then echo La cadena es alfabéticamente posterior. else if [ $pal < $palabra ] then echo La cadena es alfabéticamente anterior. else echo Las palabras son iguales. fi fi 32
  • 33. Ejemplo if operadores aritméticos • Crear un programa que me avise si el número ingresado es mayor, menor o igual a 10. #! /bin/bash clear read –p “Ingrese un valor: “ op if [ $a -gt 10 ] then echo El número ingresado es mayor a 10 else if [ $a -lt 10 ] then echo el número ingresado es menor a 10 else echo el número ingresado es 10. fi fi 33
  • 34. Ejercicio • Crear un programa que le pida a un usuario que ingrese el número 1 para realizar la suma de 2 valores o el número 2 para realizar la resta de los mismos. 34
  • 35. Solución #! /bin/bash clear read –p “Ingrese 1 para sumar o 2 para restar: “ op if [ $op -eq 1 ] then read –p “Ingrese primer valor: “ a read –p “Ingrese segundo valor: “b else sum=`expr $a + $b` # ó let sum=$a+$b echo el resultado de la suma es $sum else 35 SIGUE 
  • 36. if [ $op -eq 2 ] then read –p “Ingrese primer valor: “ a read –p “Ingrese segundo valor: “ b res=`exp $c - $d` # ó let res=$a-$b echo El resultado de la resta es $res else echo No ha ingresado un valor válido fi fi sleep 1 36
  • 37. Case case expresión in caso 1) comandos;; caso 2) comandos;; …….. *) default;; esac 37
  • 38. Ejemplo de case con menu #! /bin/bash clear echo “ MENU 1) Listar archivos comunes 2) Listar directorios “ read –p “Ingrese la opción deseada: “ op 38 SIGUE 
  • 39. Ejemplo de case con menú case $op in 1) ls –l | grep ^-;; 2) ls –l | grep ^d;; *) echo Opción inválida;; esac sleep 2 39
  • 40. Ejercicio de case • Escribir un programa que despliegue un menú en pantalla y le pida a un usuario que elija 1 de las operaciones matemáticas básicas. • Si la opción ingresada no es válida el programa deberá terminar su ejecución, avisando al usuario del problema. 40
  • 42. La ejecución del while es: 1) Se evalúa la condición 2) Si el código devuelto por la condición es 0 (verdadero), se ejecutará la orden u órdenes y se vuelve a iterar. 3) Si el código de retorno de la condición es falso, se saltará la primera orden que haya después de la palabra done. 42
  • 43. Ejemplo #! /bin/bash a=42 while [ $a –le 53 ] do echo Contador = $a a=`expr $a + 1` done 43
  • 44. Ejercicio Modifique el ejercicio de las operaciones aritméticas para que un usuario pueda hacer todas las operaciones que quiera, hasta que ingrese un valor de terminación. 44
  • 45. 45 Respuesta: Es muy fácil: Hay que poner el while al principio, con la siguiente condición: [ “$op” != 0 ], porque aún no hemos ingresado la opción y las comillas quieren decir cadena vacía. Una cosa es poner cadena vacía y otra cosa es no poner nada. Si no hay comillas larga error. Luego va el do, todo el programa en el medio, agregando una opción para el cero por ejemplo. Y al final de todo el done.
  • 46. Incrementar un contador con let #! /bin/bash cont=0 max=20 while [ $cont –lt $max ] do let cont=cont+1 echo el contador es $cont done 46
  • 47. Sobre las condiciones de las estructuras • La condición de un if puede ser en realidad cualquier comando. • El resultado de la ejecución de ese comando se guarda en una variable especial del sistema que se llama ?. Y esta variable toma el valor 0 si el comando tiene éxito y distinto de 0 si no tiene éxito. • Veámoslo con un ejemplo: 47
  • 48. Otro ejemplo de if if cp /home/pepe/* . then echo se copió correctamente else echo error fi 48
  • 49. Otro ejemplo del mismo estilo if grep $nom agenda.txt then echo el nombre ya existe. ……… else echo –n Ingrese apellido: fi 49
  • 50. Sobre la sintaxis del case case $ op in casa | CASA) acciones;; 3) acciones;; [a-z]) acciones;; *) acciones esac Nota: como acabamos de ver podemos poner lo que queramos en los casos del case, y no necesariamente 1, 2, 3, etc. 50