Tema 4 - SHELL SCRIPT

1. ¿Que es shell script?

Es un archivo de texto que puede crearse con cualquier editor de texto. Contiene un conjunto de comandos que se ejecutan de forma secuencial (linea a linea).

El shell actua a la vez como interprete de comandos y lenguaje de programacion, lo que permite automatizar tareas

Toma de contacto:

  • Shebang (!#): La primera linea de cualquier script definde el interprete de comandos a usar, comunmente !#/bin/bash.

  • Comandos: Un ejemplo basico es echo, que muestra texto en pantalla.

Ejemplo: Hola_mundo

2. Conceptos basicos: Variables y parametros

2.1 Variables

Son espacios de memoria que almacenan cadenas de caracteres, no necesitan ser declaradas ni tienen un tipo definido.

  • Creacion: Se asignan con la sintaxis nombre_variable=valor, sin espacios antes o despues del =

  • Lectura: Para leer o usar el contenido de una variable se usa el simbolo $, ejemplo (echo $Nombre)

  • Hay varios tipos, como:

    • Locales: Se usan solo en el script en el que se crearon

    • De entorno: Pueden ser utilizadas por todos los shell

Ejemplo: Variables

2.2 Paso de parametros

Los scripts pueden recibir parametros desde la linea de comandos, se accede a ellos con variables especiales:

  • $0: Nombre del script o programa

  • $1, $2, $3…: Primer, segundo, tercer parametro, etc..

  • $#: Indica el numero de parametros recibidos

  • $*: Muestra todos los parametros como una sola cadena

  • $?: Devuelve el codigo de salida del ultimo comando ejecutado. Si tuvo existo es 0.

Ejemplo: Parametros

Otras expansiones:

  • Ejecucion de comandos: Se puede asignar el resultado de un comando a una variable. variable=$(comando).

  • Aritmetica: Se pueden realizar operaciones aritmeticas usando $(($numero+3)).

Ejemplo: Expansiones

3. Entrada y salida de datos (E/S)

3.1 Comandos de consola

  • echo: Escribe en pantalla, echo -n evita el salto de linea.

  • read: Lee la entrada del usuario y la almacena en una variable.

3.2 Redireccion de E/S

  • comando > archivo: Redirige la salida estandar a un archivo

  • comando < archivo: Usa el contenido de un archivo como entrada

3.3 Tuberias y filtros

  • comando1 | comando2: El resultado (salida) de comando1 se utiliza como entrada de comando2.

  • grep: Muestra lineas que coinciden con un patron

  • head y tail: Muestra las primeras o ultimas n lineas de un fichero

  • cut: Extrae columnas especificas de datos

  • sort: Ordena las lineas de salida

4. Operaciones y estructuras de control

4.1 Operaciones

  • expr: Se usa para realizar operaciones aritmeticas simples y manipulacion de cadenas (la multiplicacion requiere escapar el asterisco \*).

  • test: Evalua expresiones y devuelve verdadero 0 o falso 1.

  • Comparadores numericos: -eq igual, -ne diferente, -gt mayor, -ge mayor o igual, -lt menor, -le menor o igual

  • Comparadores de cadena: = igual, != diferente, ``

Ejemplo: Operaciones

4.2 Estructuras de control

  • if (Condicion simple): Ejecuta un bloque de codigo si se cumple una condicion.

    • Sintaxis: if [ expresion ]; then ... fi

    • Se puede ampliar con else(si no) y elif(si no si).

    • Se pueden anidar condiciones con && (AND) y || (OR).

  • case (Condiciones multiples): Idela para menus, compara una variable con multiples valores.

    • Sintaxis: case $VARIABLE in .... esac

    • Cada opcion termina con ;;.

    • La opcion por defecto si no coincide nada es *).

5. Bucles

  • for : Se usa cuando se sabe el numero de veces que se ejecutara un codigo.

    • Sintaxis de lista: for VARIABLE in lista_elementos; do ... done

    • Sintaxis C: for ((inicio; final; avance)); do .... done

  • while: Repite un bloque de codigo mientras se cumpla una condicion.

    • Sintaxis: while [ expresion ]; do ... done

  • until: Repite un bloque de codigo mientras no se cumpla una condicion.

    • Sintaxis: until [ expresion ]; do ... done

  • select: Presenta un menu al usuario para que escoja una opcion y repite el bucle. Se suele usar break para salir.

Ejemplo: Estructuras de control

6. Funciones

Una funcion es un bloque de codigo reutilizable, se define al principio del script.

  • Sintaxis: nombre_funcion () { .... } o function nombre_funcion { ... }

  • Llamada: se invocan escribiendo su nombre nombre_funcion.

  • Variables: Por defecto las variables son globales. Se pueden declarar variables locales con local nombre_variable.

  • Parametros: Pueden recibir parametros ($1,$2,$3).

  • Retorno: Pueden devolver un valor entero usando return valor. El valor devuelto se recoge en la variable $?.

Ejemplo: Funciones

7. Otros elementos y comandos

  • Comentarios: Las lineas que empiezan por # son comentarios y no ejecutan.

7.1 Separadores de comandos:

  • ;: Separa una misma linea, se ejecutan de manera independiente.

  • &&(AND): El comando2 solo se ejecuta si el comando1 tuvo exito.

  • ||(OR): El comando2 solo se ejecuta si el comando1 no tuvo exito.

7.2 Control de bucles:

  • break: Termina la ejecucion de un bucle.

  • continue: Detiene la ejecucion actual y pasa a la siguiente.

  • exit: Detiene la ejeccion de todo el script.