fbpx
León Desarrollo - Programación WordPress

Shell Scripting, primeros pasos


Si estas por aquí es por que quizás estés comenzando con el Shell Scripting, por que necesites automatizar una tarea en Linux (o Mac) o por que tengas curiosidad del tema.

En este este artículo te voy a enseñar lo básico que debes conocer para crear tu primer script:

Estructura básica del script

La estructura básica de un script en shell suele ser bastante sencilla:

  1. Shebang (#!): Es la primera línea del script y especifica el intérprete que debe usar el sistema para ejecutar el script. Por ejemplo, para bash, sería #!/bin/bash.
  2. Comentarios: Puedes incluir comentarios para documentar tu código. Se usan con el símbolo #.
  3. Cuerpo del script: Aquí es donde pones tu código. Puedes incluir variables, comandos, estructuras de control (como if, for, while), etc.
  4. Permisos de ejecución: Antes de que puedas ejecutar tu script, debes asegurarte de que tenga permisos de ejecución. Esto se puede hacer con el comando chmod +x nombre_del_script.
#!/bin/sh

# Con este comentario vamos a comenzar nuestro script
echo "Si al ejecutarlo lees esto, es que has comenzado con buen pie. ¡Enhorabuena!"

Instalación en el sistema

Respecto a cómo configurar un script para que quede instalado en el sistema, usualmente se hace agregándolo a una de las rutas del sistema, para que esté disponible globalmente. Las ubicaciones comunes incluyen /usr/bin, /usr/local/bin, o crear un directorio personalizado para tus scripts y agregar esa ruta al $PATH del sistema.

Aquí tienes una guía rápida para instalar un script en el sistema:

  1. Asegúrate de que tu script esté completo y funcione correctamente. Prueba tu script en diferentes situaciones para asegurarte de que hace lo que quieres.
  2. Elige una ubicación para tu script. Como mencioné antes, /usr/bin, /usr/local/bin, o un directorio personalizado son opciones comunes.
  3. Copia tu script a la ubicación elegida. Puedes usar el comando cp para copiar tu script.
   sudo cp nombre_del_script /ruta/elegida
  1. Otorga los permisos de ejecución necesarios.
   sudo chmod +x /ruta/elegida/nombre_del_script
  1. Actualiza el $PATH si es necesario. Si has elegido un directorio personalizado, puedes agregarlo al $PATH en el archivo de perfil de tu shell (como .bashrc o .profile). Por ejemplo:
   export PATH="/ruta/personalizada:$PATH"
  1. ¡Listo! Ahora deberías poder ejecutar tu script desde cualquier ubicación en el sistema simplemente escribiendo su nombre.

Recuerda que al instalar scripts en ubicaciones del sistema, es importante ser cuidadoso y tener en cuenta los permisos y las implicaciones de seguridad.

Variables

Las variables son contenedores de datos que se utilizan para almacenar información en un script de shell. Pueden contener cadenas de texto, números u otros tipos de datos. Aquí tienes una explicación detallada sobre las variables en el shell scripting:

Declaración de variables

En el shell scripting de bash, puedes declarar una variable simplemente asignándole un valor. No se necesita ningún tipo de declaración de tipo de datos. Por ejemplo:

nombre="Roberto"
edad=30

Acceso a variables

Para acceder al valor almacenado en una variable, simplemente precede el nombre de la variable con el signo $. Por ejemplo:

echo $nombre   # Imprime el valor de la variable nombre, que es "Roberto"
echo $edad     # Imprime el valor de la variable edad, que es 30

Reglas para nombrar variables

  • Los nombres de las variables pueden contener letras, números y guiones bajos _, pero no pueden comenzar con un número.
  • Los nombres de las variables son sensibles a mayúsculas y minúsculas.
  • Se recomienda utilizar nombres descriptivos para las variables para hacer que el código sea más legible.

Variables de entorno

Existen algunas variables predefinidas en el shell que contienen información sobre el entorno de ejecución. Por ejemplo:

  • $HOME: Contiene la ruta al directorio de inicio del usuario.
  • $PATH: Contiene una lista de directorios separados por : donde el sistema buscará los ejecutables de los comandos.
  • $USER: Contiene el nombre del usuario que está ejecutando el script.

Variables especiales

  • $0: Contiene el nombre del script.
  • $1, $2, …, $n: Contienen los argumentos pasados al script o a una función.
  • $#: Contiene el número de argumentos pasados al script o a una función.
  • $@: Contiene todos los argumentos pasados al script o a una función como una lista separada por espacios.

Variables de solo lectura

Puedes declarar una variable como de solo lectura utilizando el comando readonly. Una vez que una variable se declara como de solo lectura, su valor no puede ser modificado. Por ejemplo:

readonly mi_variable="Este es un valor de solo lectura"

Estas son algunas de las características básicas de las variables en el shell scripting. Son una parte fundamental para almacenar y manipular datos en tus scripts.

Operaciones básicas

En el shell scripting de bash, puedes realizar varias operaciones básicas con variables, como asignación de valores, concatenación de cadenas, aritmética básica y manipulación de cadenas. Aquí tienes una explicación de algunas de las operaciones más comunes:

Asignación de valores

Ya hemos visto cómo asignar valores a variables:

nombre="Roberto"
edad=30

Concatenación de cadenas

Puedes concatenar cadenas utilizando el operador de concatenación += o simplemente colocando las variables una al lado de la otra:

saludo="¡Hola, "
nombre="Roberto"
mensaje=$saludo$nombre"!"
echo $mensaje   # Imprimirá: ¡Hola, Roberto!

Aritmética básica

Puedes realizar operaciones aritméticas básicas utilizando la doble paréntesis (()) o el comando expr. Aquí tienes algunos ejemplos:

# Usando (( ))
x=5
y=3
resultado=$((x + y))
echo $resultado   # Imprimirá: 8

# Usando expr
resultado=$(expr $x + $y)
echo $resultado   # Imprimirá: 8

Manipulación de cadenas

Puedes realizar diversas operaciones con cadenas, como encontrar la longitud de una cadena, extraer una parte de una cadena, reemplazar parte de una cadena, etc. Aquí tienes algunos ejemplos:

# Longitud de una cadena
cadena="Hola Mundo"
longitud=${#cadena}
echo $longitud   # Imprimirá: 10

# Extraer parte de una cadena
subcadena=${cadena:0:4}  # Extrae los primeros 4 caracteres
echo $subcadena   # Imprimirá: Hola

# Reemplazar parte de una cadena
nueva_cadena=${cadena/Mundo/Amigo}  # Reemplaza "Mundo" por "Amigo"
echo $nueva_cadena   # Imprimirá: Hola Amigo

Variables especiales

Además de las operaciones mencionadas anteriormente, también puedes realizar operaciones con variables especiales como $@, $#, $*, $?, etc. Por ejemplo:

# Número de argumentos pasados al script
num_args=$#
echo "Número de argumentos: $num_args"

# Argumentos pasados al script
args=$@
echo "Argumentos: $args"

Estas son algunas de las operaciones básicas que puedes realizar con variables en el shell scripting de bash.

Operaciones de comparación

En el shell scripting de bash, puedes comparar valores utilizando operadores de comparación y utilizar los operadores lógicos AND y OR para combinar múltiples condiciones. Aquí te explico cómo hacerlo:

Operadores de comparación

  • Igualdad: ==
  • Desigualdad: !=
  • Mayor que: >
  • Mayor o igual que: >=
  • Menor que: <
  • Menor o igual que: <=

Por ejemplo, para comparar si dos variables son iguales:

a=5
b=7
if [ $a == $b ]; then
    echo "a es igual a b"
else
    echo "a no es igual a b"
fi

Operadores lógicos

  • AND lógico: &&
  • OR lógico: ||

Puedes usar && para verificar si dos condiciones son verdaderas y || para verificar si al menos una de las condiciones es verdadera. Por ejemplo:

edad=25
if [ $edad -gt 18 ] && [ $edad -lt 30 ]; then
    echo "La persona tiene entre 18 y 30 años"
fi

# Otra forma de escribirlo utilizando && y -a (AND)
if [ $edad -gt 18 -a $edad -lt 30 ]; then
    echo "La persona tiene entre 18 y 30 años"
fi

# También puedes usar || para el OR lógico
if [ $edad -lt 18 ] || [ $edad -gt 65 ]; then
    echo "La persona es menor de 18 años o mayor de 65 años"
fi

# Otra forma de escribirlo utilizando || y -o (OR)
if [ $edad -lt 18 -o $edad -gt 65 ]; then
    echo "La persona es menor de 18 años o mayor de 65 años"
fi

Negación lógica

Puedes negar una condición utilizando el operador !. Por ejemplo:

if ! [ $edad -eq 20 ]; then
    echo "La edad no es igual a 20"
fi

Estas son algunas de las formas en que puedes comparar valores y utilizar los operadores lógicos AND y OR en el shell scripting de bash.

Estructuras de control

En el shell scripting de bash, hay varias estructuras de control básicas que te permiten controlar el flujo de ejecución del script. Aquí tienes una explicación de las estructuras de control más comunes:

1. Estructuras de control de flujo condicional

  • if-else: Permite ejecutar bloques de código basados en una condición.
if [ condición ]; then
    # código si la condición es verdadera
else
    # código si la condición es falsa
fi
  • if-elif-else: Permite encadenar múltiples condiciones.
if [ condición1 ]; then
    # código si la condición1 es verdadera
elif [ condición2 ]; then
    # código si la condición2 es verdadera
else
    # código si ninguna de las condiciones anteriores es verdadera
fi

2. Estructuras de control de bucles

  • for: Ejecuta un conjunto de comandos una cantidad específica de veces.
for variable in lista_de_elementos; do
    # código a ejecutar
done
  • while: Ejecuta un conjunto de comandos mientras una condición sea verdadera.
while [ condición ]; do
    # código a ejecutar
done
  • until: Ejecuta un conjunto de comandos hasta que una condición sea verdadera.
until [ condición ]; do
    # código a ejecutar
done

3. Control de bucles y funciones

  • break: Sale inmediatamente de un bucle.
  • continue: Salta a la siguiente iteración de un bucle.

4. Control de flujo adicional

  • case: Permite ejecutar diferentes bloques de código según el valor de una variable.
case variable in
    valor1)
        # código a ejecutar si la variable es igual a valor1
        ;;
    valor2)
        # código a ejecutar si la variable es igual a valor2
        ;;
    *)
        # código a ejecutar si la variable no coincide con ninguno de los valores anteriores
        ;;
esac

Estas son las estructuras de control básicas en el shell scripting de bash. Con estas herramientas, puedes controlar eficazmente el flujo de ejecución de tus scripts y realizar operaciones condicionales y repetitivas.

Funciones

Puedes definir funciones en el shell scripting de bash de una manera bastante sencilla. Aquí tienes cómo hacerlo:

nombre_de_la_funcion() {
    # código de la función
    echo "Hola, soy una función"
}

Esto define una función llamada nombre_de_la_funcion que imprime «Hola, soy una función» cuando se llama.

Llamada a una función

Para llamar a una función, simplemente escribe su nombre seguido de paréntesis:

nombre_de_la_funcion

Paso de argumentos a una función

Puedes pasar argumentos a una función de la misma manera que pasas argumentos a un script. Dentro de la función, puedes acceder a los argumentos utilizando $1, $2, etc.

saludar() {
    echo "Hola, $1"
}

saludar "Roberto"

En este ejemplo, la función saludar recibe un argumento (el nombre) y lo utiliza para saludar a la persona.

Valor de retorno de una función

Puedes devolver un valor desde una función utilizando el comando return. Por ejemplo:

sumar() {
    local resultado=$(( $1 + $2 ))
    return $resultado
}

# Llamar a la función y almacenar el resultado en una variable
resultado=$(sumar 5 3)
echo "La suma es: $resultado"

En este ejemplo, la función sumar devuelve la suma de los dos números pasados como argumentos.

Estas son las bases para definir funciones en el shell scripting de bash. Las funciones son útiles para organizar y reutilizar código, lo que hace que tus scripts sean más modulares y fáciles de mantener.

Consejos adicionales

¡Claro que sí! Aquí tienes algunos consejos adicionales para empezar a programar con Shell Scripting:

1. Conoce los fundamentos de Unix/Linux

Shell Scripting se desarrolla principalmente en entornos Unix/Linux. Es importante tener una comprensión básica del sistema operativo y de los comandos de la línea de comandos de Unix/Linux, como ls, cd, grep, awk, sed, entre otros.

2. Práctica constante

La práctica constante es clave para mejorar en cualquier lenguaje de programación, incluyendo el Shell Scripting. Empieza con proyectos simples y avanza gradualmente a proyectos más complejos a medida que adquieras más experiencia.

3. Utiliza herramientas de depuración

Aprende a utilizar herramientas de depuración como echo, printf, set -x, y set -e para identificar y solucionar problemas en tus scripts.

4. Documenta tu código

Escribe comentarios claros y concisos en tu código para explicar lo que hace cada parte del script. Esto facilitará la comprensión y la mantenibilidad del código, tanto para ti como para otros desarrolladores.

5. Estudia recursos adicionales

Hay muchos recursos disponibles para aprender Shell Scripting, como libros, tutoriales en línea, foros de discusión y cursos en línea. Dedica tiempo a estudiar y aprender de estos recursos para mejorar tus habilidades.

6. Explora la documentación oficial

La documentación oficial de Bash es una excelente fuente de referencia para aprender sobre las características y funcionalidades del lenguaje. Aprende a utilizar la documentación para encontrar respuestas a tus preguntas y resolver problemas.

7. Prueba tus scripts en diferentes entornos

Asegúrate de probar tus scripts en diferentes entornos y sistemas operativos para garantizar su compatibilidad y portabilidad. Esto te ayudará a identificar posibles problemas y a escribir scripts más robustos.

8. Mantén la seguridad en mente

Ten cuidado con los comandos y técnicas que puedan representar riesgos de seguridad, como la inyección de comandos. Siempre valida y escapa las entradas de usuario adecuadamente para evitar vulnerabilidades de seguridad.

Siguiendo estos consejos y practicando regularmente, podrás mejorar tus habilidades en Shell Scripting y desarrollar scripts más eficientes y útiles. ¡Buena suerte en tu viaje de aprendizaje! Si tienes más preguntas o necesitas más ayuda, ¡no dudes en decírmelo!

Suscríbete

Si quieres estar al día con las novedades de este sitio te recomiendo que te suscribas.

Comentarios

Deja un comentario


2018 animaciones animación Aranda array atributos añade base de datos buscar categoría css curso diseño Duero emprendimiento fechas fiduero guía imagen imagenes inauguracion instalar Isilla linux local mac node.js pagina pagina web php post problemas producto red servicio servidor solución split sql sql server stock string windows woocommerce wordpress