Introducción a la programación de Bash y Scripts
Curso: Arquitectura de Computadoras y Sistemas Operativos
Profesor: Mag. Ing. Rubén Acosta UPC - Universidad Peruana de Ciencias Aplicadas
Temario
1.-Introducción a la programación de Bash y Scripts
1.- Introducción a la programación de Bash y Scripts
Shell Interfaz de línea de comandos (CLI)
o Es el entorno que hace de intermediario entre el usuario y los recursos
del ordenador, como si fuera un entorno de programación en tiempo
real
para ejecutar tareas.
o La Shell aparece cuando ingresamos al sistema operativo en modo
consola como usuario o bien cuando en el entorno gráfico abrimos un
CLI.
o pi@raspberrypi:~$
o pi es el usuario
o raspberrypi es el host
o :~ directorio actual
o $ es el cursor
1.- Introducción a la programación de Bash y Scripts
Bash (Bourne Again Shell)
o Es un intérprete de órdenes o comandos que generalmente se ejecuta en
una ventana de texto donde el usuario escribe órdenes en modo texto.
o pi@raspberrypi:~$ nano [Link]
Script
o Es un código de programación, que contiene comandos u ordenes que se
van ejecutando de manera secuencial y comúnmente se
utilizan para controlar el comportamiento de un programa en especifico
o para interactuar con el sistema operativo.
¿Cómo hacer un Bash en Linux?
Es crear un script en Linux de forma sencilla.
o Crear un fichero de texto con el editor nano
o Guardar el fichero con un nombre y con extensión, .sh
o Escribir en la primera línea, #!/bin/bash
¿Qué es #!/ bin/bash?
o Esta línea indica donde se encuentra el intérprete de comandos en nuestro
sistema operativo.
o Al utilizar esta línea, podremos ejecutar el script como un programa normal,
ya que el sistema operativo sabrá que es un script en Bash y que tiene que
hacer con el. o
o <Ctrl> + O, para grabar
/bin archivos binarios ejecutables; contiene todos los comandos básicos del
sistema operativo, accesibles a todos los usuarios
o <enter>
o <Ctrl + x> para salir
o pi@raspberrypi:~$ bash [Link]
1.- Introducción a la programación de Bash y Scripts
Códigos de salida bash en Linux
o Cada vez que ejecutamos un comando o script, el sistema nos
devuelve un código de retorno. Si no lo solicitas explícitamente,
este código no es visible.
o Los códigos de salida bash son numéricos, pero limitados entre 0
y 255 porque se utiliza un entero de ocho bits.
o Para visualizar las salidas debes usar la siguiente sintaxis.
o comando/script ; echo $?
1.- Introducción a la programación de bash y scripts
Reglas para escribir un script en Linux
o pi@raspberrypi:~$ nano [Link]
o # : Sirve para iniciar comentario
o $ : Consulta valor de la variable.
o ; : Une comandos escritos en una línea
o = : Asigna valor a variables.
o ${ } : Contiene el índice del elemento de la variable (arreglos)
o ‘‘ : Indica caracteres literales. La variable dentro de
ella no es procesada como variable.
o “ “ : Agrupa cadena de caracteres. La variable dentro
de ella si es ejecutada
NOTA1: No debe de haber espacios en blanco entre la
variable=valor
o pi@raspberrypi:~$ bash [Link]
o 500$x
o 500100
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
Reglas para escribir un script en Linux o pi@raspberrypi:~$ nano [Link]
o Comando read: Sirve para almacenar un dato
ingresado por el teclado alfanumérico
o pi@raspberrypi:~$ bash [Link]
o Introduce un caracter por teclado
o 2
o El caracter es: 2
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
Reglas para escribir un script en Linux o pi@raspberrypi:~$ nano [Link]
o Comando let: Sirve para trabajar operaciones
aritméticas (+, -, *, /, %) con números enteros
o pi@raspberrypi:~$ bash [Link]
o 4
o 8
o 12
o 0
o Otra forma de agrupar
o La resta es: 7
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Reglas para escribir un script en Linux
o Arreglo: Es un conjunto de elementos cuyo acceso a
cada uno de ellos se realiza por índices. El primer
elemento tiene índice 0.
o No es necesario colocar el tamaño del arreglo en un
script de Linux.
o Permite ingresar valores.
o pi@raspberrypi:~$ bash [Link]
o 1
o 0.5
o hola
o -34
o 1
o 23.46
o Hola
o -34
o 4
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Reglas para escribir un script en Linux
o Función: Es un grupo de código que cumple una
determinada tarea. Su uso es a través de llamadas.
o Primero se escribe la función y luego se invoca.
o Las funciones bash pueden aceptar cualquier número
de parámetros
o Las funciones bash siempre devuelven un único valor
o ¿Qué es eso de expr ?. Se utiliza para guardar el
resultado de una expresión en una variable.
o Sintaxis
o function “nombre” () { …instrucciones }
o pi@raspberrypi:~$ bash [Link]
o hola
o alumnos
o Ingrese valor1: 22
o Ingrese valor2: 22
o El resultado es: 44
o 44
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
Operadores lógicos
Operador Función lógica Descripción Ejemplos
-a And lógico Se usa para condiciones compuestas [ $a –lt 20 –a $b –gt 100 ]
(si se cumple las 2 condiciones a la vez
devuelve verdadero)
-o Or lógico Se usa para condiciones compuestas [ $a –lt 20 –o $b –gt 100 ]
(si una de las 2 condiciones se cumple devuelve
verdadero)
! Negación Negación if [ ! -d "Directorio" ]; then
echo "No existe Directorio"
fi
&& And lógico Se usa para condiciones compuestas [[ condition1 && condition2 ]]
|| Or lógico Se usa para condiciones compuestas while [ $opcion -ne 4] || [$opcion -ne 0 ]
2.- Introducción a la programación de bash y scripts
Operadores aritméticos
Operador Función aritmética Descripción Ejemplos
+ suma suma variable=`expr 22 + 2`
echo $variable
- resta resta let resta=$varX-$varY
echo $resta
* producto producto let multiplicacion=$varX*$varY
echo $multiplicacion
/ División entera División entera variable=`expr 10 / 2`
% Resto de división Resto de división entera let resto=$varY%$varX
entera echo $resto
** Potencia Potencia num=3
echo $((num ** 2))
1.- Introducción a la programación de bash y scripts
Operadores de comparación numérica
Operador Función aritmética Descripción Ejemplos
-lt Menor que Menor que if [ 2 -lt 4 ]
-le Menor o igual que Menor o igual que if [ $x -le 23 ]
-eq Igual que Igual que if [ $n -eq 101 ]
-ge Mayor o igual que Mayor o igual que elif [ $marks -ge 33 ]
-gt Mayor que Mayor que $i -gt $j
-ne Diferente que Diferente que if [ $RESULTADO -ne 0 ]; then
echo “Es diferente a cero"
else
echo “igual a cero"
fi
1.- Introducción a la programación de bash y scripts
Operadores de comparación de cadenas
Operador Función aritmética Descripción Ejemplos
= igual igual, las dos cadenas de texto son VAR1=“hola"
exactamente idénticas VAR2=“hola"
if [ "$VAR1" = "$VAR2" ]; then
echo “Cadenas son iguales."
else
echo “Cadenas son diferentes”
fi
!= No es igual a / Distinto no igual, las cadenas de texto no if [ "$a" != "$b" ]
son exactamente idénticas
< Menor es menor que (en orden alfabético string1='ceo'
ASCII) string2='aeo'
if [[ $string1 > $string2 ]];
then
echo Eso es verdad
else
echo Eso es mentira
fi
> Mayor es mayor que (en orden alfabético string1='ceo'
ASCII) string2='aeo'
if [[ $string1 < $string2 ]];
then
echo Eso es verdad
else
echo Eso es mentira
fi
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Sentencias de bifurcación
Sentencia if-else
if [ condición ]
then
…comando
…comando
else
…comando
…comando
fi
Sentencia if-elif-else
if [ condición1 ]
then
…comando
elif condición2; then
…comando
else o pi@raspberrypi:~$ bash [Link]
…comando o Ingrese un valor numérico: 4
o Valor es menor que 10
…comando o Ingrese su nota: 17
fi o Bueno
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Sentencias de bifurcación
Sentencia case
case expresión in
Caso1) …comandos;;
Caso2) …comandos;;
*) …comandos;;
esac
o pi@raspberrypi:~$ bash [Link]
o Ingrese un número por teclado
o 6
o Este es el primer número
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Sentencias de bucles
Sentencia for
for variable in lista
do
…comando
done
for ((inicio; mientras; incremento))
do
…comando
done
Sentencia while
while [ condición ]
do
…comando
done
Sentencia until
Este tipo de bucle se usa cuando queramos que haga el bucle mientras las
condición no se cumpla
o pi@raspberrypi:~$ bash [Link] o 1
until [ condición ] o 1 o 2
do o 2 o
o
3
o 3 6
…comando o 1 o 5
done o 2 o 4
o 3 o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Ejemplo 9:
Programar un ciclo de 5 elementos pero al tercer
elemento romper el bucle usando la sentencia break.
o pi@raspberrypi:~$ bash
[Link]
o Cuentas es:1
o Cuentas es:2
o Se terminó la cuenta
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Ejemplo 10:
Crear un archivo calculadora simple en bash. Se debe
Tener en cuenta los siguientes requisitos:
o Debe de indicar el ingreso de los números a operar
o Debe presentar un menú de 4 operaciones
o Debe de indicar el ingreso de la opción
seleccionada.
o Debe imprimir un mensaje con pregunta si se desea
continuar con la calculadora.
o pi@raspberrypi:~$ bash [Link]
o Introduce el primer número: 2
o Introduce el segundo número: 2
o Introduce el número de operación seleccionada (1 al 4)
o 3
o Resultado de la multiplicación= 4
o Quieres continuar (y/n) ?
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano [Link]
Ejemplo 11:
Crear un archivo [Link] en bash. Se debe
Tener en cuenta los siguientes requisitos:
o Debe de indicar el ingreso del número
o Imprimir si se ha acertado o se ha equivocado.
o La instrucción exit permite en todo momento finalizar
un script devolviendo el estado al sistema.
o exit 0 : Sale del shell con estado verdadero
o exit 1 : Sale del shell con estado falso
o exit N, donde N>0 indica un error de algún tipo
o pi@raspberrypi:~$ bash [Link]
o Adivina el valor numérico del 1 al 9: 1
o Has acertado
o pi@raspberrypi:~$
1.- Introducción a la programación de bash y scripts
Programar un script en un Shell de Linux denominado [Link] que deberá estar almacenado en la carpeta Pregunta_2. En el script
deberá de crearse dos carpetas denominadas: fase1 y fase2. Las carpetas Pregunta_2, fase 1, fase 2 y el archivo [Link],
deberán tener los permisos de lectura, escritura y ejecución para el propietario y grupo de propietarios y para otros usuarios sólo de lectura.
La carpeta fase1, incluirá dos archivos, los cuales son: [Link] y [Link], que tienen los mismos permisos que el archivo
[Link].
El archivo [Link], deberá imprimir una cuenta de incremento de 0 a 9 cada 1 s.
El archivo [Link] deberá imprimir una cuenta de decremento de 9 a 0 cada 1s.
La carpeta Fase2, incluirá dos archivos, los cuales son; [Link] y [Link], tienen los mismos permisos que la
carpeta fase 2.
El archivo [Link] deberá recibir sólo 2 números por teclado alfanumérico para luego compararlos e imprimir como salida
sólo el número mayor.
El archivo [Link] deberá recibir sólo cuatro números para ordenarlos de mayor a menor e imprimir como salida los números
ingresados ordenados de mayor a menor.
a) (1 punto) Imprimir el árbol de carpetas y archivos de la pregunta_2.
b) (2 puntos) deberá de visualizarse en pantalla el código programado y también de su ejecución de los archivos de la carpeta fase 1
c) deberá de visualizarse en pantalla el código programado y también de su ejecución de los archivos de la carpeta fase 2.
Preguntas ?