CodeGym /Cursos /Docker SELF /Introducción a los scripts bash: sintaxis, variables, com...

Introducción a los scripts bash: sintaxis, variables, comandos

Docker SELF
Nivel 3 , Lección 3
Disponible

Introducción a los scripts bash: sintaxis, variables, comandos

1. ¿Qué son los scripts bash?

Si alguna vez pensaste: "¿Por qué tengo que repetir las mismas órdenes una y otra vez?", ¡felicidades, estás listo para los scripts bash! Los scripts bash son una forma de automatizar tu trabajo en Linux escribiendo una secuencia de comandos en un solo archivo. Bash (Bourne Again Shell) no es solo un shell, es la navaja suiza para administradores, programadores y todos los que quieran que el sistema trabaje para ellos.

Ventajas de los scripts bash

  • Ahorro de tiempo: Lo escribes una vez y lo ejecutas ocho veces.
  • Repetibilidad de tareas: Los scripts se ejecutan igual cada vez (bueno, si lo escribiste bien).
  • Automatización de tareas rutinarias: Crea comandos personalizados para copias de seguridad, monitoreo de recursos o gestión de archivos.

2. Fundamentos de creación de scripts

Ok, vamos a empezar. Un bash-script es simplemente un archivo de texto con un conjunto de comandos. Pero para que Linux entienda que es un script y no solo anotaciones aleatorias de un diario, tienes que seguir ciertas reglas.

Paso 1: Nombre y formato del archivo

Los bash-scripts normalmente tienen la extensión .sh (aunque no es obligatorio). Por ejemplo:

hello_world.sh
backup_script.sh

Paso 2: Cabecera obligatoria

Cada bash-script empieza con la línea:

#!/bin/bash

Esta línea se llama shebang y le dice al sistema que para ejecutar el script debe usar el intérprete /bin/bash. Sin ella, el sistema simplemente mirará tu script, suspirará tristemente y no hará nada.

Paso 3: El script más simple

Vamos a crear y ejecutar un script que muestre el texto "Hola, mundo!". Al fin y al cabo, ¿por qué no?

  1. Creas un archivo:

    nano hello_world.sh
    
  2. Añades las líneas:

    #!/bin/bash
    echo "Hola, mundo!"
  3. Haces que el archivo sea ejecutable:

    chmod +x hello_world.sh
    
  4. Ejecutas el script:

    ./hello_world.sh
    

En la pantalla verás:

Hola, mundo!

3. Trabajo con variables

Las variables son un almacenamiento de datos en tu script. Hacen que los scripts sean flexibles y cómodos.

Creación de variables

Para declarar una variable, utiliza el formato:

NOMBRE_VARIABLE="valor"

Ejemplo:

NAME="Linux"
echo "¡Bienvenido a $NAME!"

Salida:

¡Bienvenido a Linux!

Nota: entre el nombre de la variable y el signo = no debe haber espacios. Si los pones, bash pensará que estás intentando escribir algo extraño y dará un error.

Variables predefinidas

Bash proporciona varias variables predefinidas, por ejemplo:

  • $USER — usuario actual.
  • $HOME — directorio home.
  • $PWD — directorio de trabajo actual.

Prueba este script:

#!/bin/bash
echo "¡Hola, $USER!"
echo "Tu directorio home: $HOME"
echo "Estás trabajando ahora aquí: $PWD"

4. Recibiendo datos del usuario

A veces un script necesita obtener datos del usuario para funcionar. Para esto, se utiliza el comando read.

Ejemplo:

#!/bin/bash
echo "¿Cómo te llamas?"
read NAME
echo "¡Hola, $NAME!"

Cuando ejecutes el script, podrás ingresar tu nombre, y el script te saludará de manera personalizada.


5. Uso de comandos dentro de un script

Bash te permite ejecutar comandos como si los escribieras en la terminal.

Por ejemplo:

#!/bin/bash
echo "Fecha y hora actual:"
date

El comando date mostrará la fecha y hora actual, por ejemplo:

Fecha y hora actual:
Mon Oct 30 12:34:56 UTC 2023

Guardar el resultado de un comando en una variable

Puedes guardar la salida de un comando en una variable usando $(). Esto es útil para procesar datos posteriormente.

Ejemplo:

#!/bin/bash
CURRENT_DATE=$(date)
echo "Ahora: $CURRENT_DATE"

6. Comentarios en los scripts

Siempre pon comentarios, para que dentro de un mes entiendas qué rayos escribiste. Usa el símbolo # para los comentarios:

#!/bin/bash
# Este es un script de bienvenida
echo "¡Bienvenido al mundo de Bash!"

Los comentarios son ignorados por el intérprete y no afectan la ejecución.


7. Ejemplo

Ahora escribamos un script que verifica si un archivo existe.

  1. Creemos un archivo:

    nano file_checker.sh
    
  2. Agreguemos el código:

    #!/bin/bash
    
    # Solicitar el nombre del archivo
    echo "Introduce el nombre del archivo:"
    read FILE_NAME
    
    # Verificar si el archivo existe
    if [ -f "$FILE_NAME" ]; then
        echo "El archivo $FILE_NAME existe."
    else
        echo "El archivo $FILE_NAME no fue encontrado."
    fi
  3. Hagamos el archivo ejecutable y ejecutémoslo:

    chmod +x file_checker.sh
    ./file_checker.sh
    
  4. Ejemplo de ejecución del script:

    Introduce el nombre del archivo:
    test.txt
    El archivo test.txt existe.
    

8. Errores típicos

Trabajar con scripts bash no solo trae alegría, sino que a veces también rompe un poco la cabeza. Aquí van algunos errores comunes:

  1. Falta de shebang.
    Sin la línea #!/bin/bash tu script puede intentar ejecutarse en otro intérprete, lo que resultará en errores.

  2. Variables no declaradas.
    Si accidentalmente te equivocas escribiendo el nombre de una variable, bash la tomará como vacía. Activa el modo de comprobación estricta con set -u al inicio del script.

  3. Espacios alrededor de =.
    Nunca escribas algo como: VARIABLE = "value". Esto generará un error.

  4. Problemas con permisos.
    Si el script no tiene permiso de ejecución, actívalo con chmod +x.

Tarea práctica

  1. Escribe un script que:

    • Solicita el nombre del usuario.
    • Muestra un mensaje de bienvenida.
    • Muestra la fecha y hora actuales.
  2. Escribe un script que:

    • Solicita al usuario el nombre de un archivo.
    • Crea el archivo si no existe, o informa que el archivo ya existe.

¡Ahora ya conoces los fundamentos de los scripts bash! Queda por aprender cómo agregar condiciones y bucles, pero eso será tema de la siguiente lección. ¡Adelante, hacia la automatización del mundo!

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION