Tabla de Contenidos

12. Scripts básicos en Linux

VI

Introducción a los Scripts

Para crear un Script en Linux hay que seguir los siguientes pasos:

vi miscript.sh
#!/usr/bin/env bash

o

#!/bin/bash
chmod u+x miscript.sh
./miscript.sh

Parámetros y Variables

Redirecciones

En Linux se permite hacer la redirección de la entrada y la salida a un fichero y desde un fichero.

find / -name "*.mkv" > mis-peliculas.txt
find / -name "*.avi" >> mis-peliculas.txt
sort < mis-peliculas.txt

Mas información:

Operador Substitución

  ANYO_ACTUAL=$(date +%Y)
  echo $ANYO_ACTUAL
 

Operador matemático

Para hacer operaciones matemáticas con bash usar $[ ]

  a=3
  b=1
  c=$[ $a - $b ]
  echo $c
 

Mostrará por pantalla 2

También se puede usar la orden bc que permite decimales.

  a=3.7
  b=1.2
  c=$( echo "$a - $b" | bc -l)
  echo $c
 

Mostrará por pantalla 2.5

Otro ejemplo de bc

  echo "1.3+2.6+7.8+8.9" | bc -l
 

Mostrará por pantalla 20.6

Condicional

if [ "$SALUDO" == "HOLA" ]; then
    echo "Ha saludado con Hola"
else
   echo "No ha saludado con Hola"
fi

if [ "$SALUDO" == "HOLA" ]; then
    echo "Ha saludado con Hola"
elif [ "$SALUDO" == "Hello" ]; then
    echo "Ha saludado con Hello"
else
   echo "No ha saludado con Hola"
fi

if [ "$SALUDO" == "HOLA" ] || [ "$SALUDO" == "Hello" ]; then
    echo "Ha saludado "
else
   echo "No ha saludado"
fi

if [ "$SALUDO" == "HOLA" ] && [ "$NOMBRE" == "Lorenzo" ]; then
    echo "Hola Lorenzo "
fi

if [ "$ANYO_ACTUAL" -le "2020" ]; then
    echo "El año actual es menor o igual que 2020"
fi

Operadores para textos
Operador en Bash Significado Ejemplo
== = if [ "$a" == "$b" ]; then
!= if [ "$a" != "$b" ]; then
Operadores para números enteros
Operador en Bash Significado Ejemplo
-eq = (equal) if [ "$a" -eq "$b" ]; then
-ne ≠ (not equal) if [ "$a" -ne "$b" ]; then
-gt > (greater than) if [ "$a" -gt "$b" ]; then
-ge ≥ (greater or equal) if [ "$a" -ge "$b" ]; then
-lt < (less than) if [ "$a" -lt "$b" ]; then
-le ≤ (less or equal) if [ "$a" -le "$b" ]; then
Operadores lógicos
Operador en Bash Significado Ejemplo
|| O lógico if [ "$a" == "$b" ] || [ "$a" == "$c" ]; then
&& Y lógico if [ "$a" != "$b" ] && [ "$a" != "$c" ]; then

Bucles

#Muestra los números del 0 al 9
for I in 0 1 2 3 4 5 6 7 8 9
do
    echo Es valor de I=$I
done
#Borra todos los ficheros del directorio
for FICHERO in $(ls)
do
    rm $FICHERO
done

Ejercicios

Ejercicio 1

Haz un Script que muestre por pantalla "Hola Mundo" , para ello usa la orden "echo".

Ejercicio 2

Parámetros básicos:

Ejercicio 3

Haz un Script llamado "sumar.sh" que sume dos números enteros que se pasan como argumentos.

Modifica el Script para que acepte números decimales

Ejercicio 4

Haz un Script llamado "nota_media_sistemas.sh" que dados 3 notas enteras (Examen, Prácticas y Actitud) , obtenga la nota media del módulo de "Sistemas Informáticos". Sabiendo que el peso de cada nota es del 60%, 30% y 10% respectivamente

Modifica el Script de la siguiente forma:

Ejercicio 5

Haz un script llamado "format.sh" que le pasemos como argumentos:

Y deberá hacer:

Ejercicio 6

Haz un script llamado "permitir_ejecucion.sh" que acepte como argumento el nombre de un fichero. La orden añadirá el permiso de ejecución al propietario de ese fichero

Modifica el Script para que acepte un segundo argumento que sea alguno de los siguientes valores:

Con cualquier otro valor deberá mostrar un mensaje de error y no hacer nada.