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:
- 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
. - Comentarios: Puedes incluir comentarios para documentar tu código. Se usan con el símbolo
#
. - Cuerpo del script: Aquí es donde pones tu código. Puedes incluir variables, comandos, estructuras de control (como if, for, while), etc.
- 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:
- 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.
- Elige una ubicación para tu script. Como mencioné antes,
/usr/bin
,/usr/local/bin
, o un directorio personalizado son opciones comunes. - Copia tu script a la ubicación elegida. Puedes usar el comando
cp
para copiar tu script.
sudo cp nombre_del_script /ruta/elegida
- Otorga los permisos de ejecución necesarios.
sudo chmod +x /ruta/elegida/nombre_del_script
- 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"
- ¡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!
Deja un comentario