Herramientas de usuario

Herramientas del sitio


clase:daw:si:2eval:tema12

12. Scripts básicos en Linux

VI

Introducción a los Scripts

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

  • Crear el fichero del Script con la extensión ".sh"
vi miscript.sh
  • Añadir en la primera línea del fichero lo siguiente 1):
#!/usr/bin/env bash

o

#!/bin/bash
  • Darle permisos de ejecución:
chmod u+x miscript.sh
  • Ejecutar el Script con la ruta del directorio actual:
./miscript.sh

Parámetros y Variables

  • Principales variables del bash
    • $HOME: Directorio inicial del usuario
    • $PATH: Lista de directorios donde buscar un ejecutable
    • $PWD: El directorio de trabajo actual
    • $UID : Identificador del usuario actual
    • $$ : El PID del proceso actual
    • $1, $2 , $3, …: Cada uno de los argumentos
    • $#: El Nº de argumentos

Redirecciones

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

  • Redireccionar la salida
find / -name "*.mkv" > mis-peliculas.txt
  • Añadir a la salida
find / -name "*.avi" >> mis-peliculas.txt
  • Redireccionar la entrada
sort < mis-peliculas.txt

Mas información:

Operador Substitución

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:

  • Crea un Script llamado "ejer1.sh" y haz que se le pase un parámetro y que lo muestre por pantalla.
  • Crea un Script llamado "ejer2.sh" y haz que se le pasen 2 parámetros y que se muestren por pantalla.

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:

  • Si la nota del examen es un 10 que muestre por pantalla "Felicidades!!"
  • Si alguna de las notas es menor que 0 o mayor que 10 que muestre un aviso de que esa nota no tiene un valor válido y no haga nada mas.

Ejercicio 5

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

  • El nombre de una partición
  • El nombre de un sistema de archivos. Solo se permitirán los siguientes sistemas de archivos:
    • ext4
    • XFS
    • Btrfs

Y deberá hacer:

  • Si no pasan los 2 argumentos deberá darse un error.
  • Si el sistema de archivos es "ext3" deberá indicarse que "El sistema de archivos es demasiado viejo" y no hacer nada mas
  • Si el sistema de archivos es "ext2" deberá indicarse que "El sistema de archivos no soporta Journaling" y no hacer nada mas
  • Si están los dos argumentos se deberá crear un sistema de archivos en la partición del tipo indicado.

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:

  • "PROPIETARIO": Añadirá el permiso solo al propietario
  • "GRUPO": Añadirá el permiso solo al grupo
  • "TODOS": Añadirá el permiso al propietario , al grupo y a otros.

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

clase/daw/si/2eval/tema12.txt · Última modificación: 2021/12/06 21:18 por admin