Saltar al contenido principal

Cómo escribir un Bash Script: Un sencillo tutorial de Bash Scripting

Descubre los fundamentos de las secuencias de comandos bash y aprende a escribir una secuencia de comandos bash.
5 mar 2024  · 5 min de lectura

El intérprete de comandos o shell es un tipo de programa informático que presenta una interfaz con el sistema operativo. El nombre shell se debe a que es la capa más externa del sistema operativo. 

Para gestionar la interacción entre los usuarios y el sistema operativo, el shell solicita una entrada y luego la interpreta para el sistema operativo antes de manejar cualquier salida que reciba. Esta entrada puede proporcionarse mediante una interfaz de línea de comandos (CLI) o una interfaz gráfica de usuario (GUI), según la operación y el papel que asuma el ordenador.

Consulta nuestro artículo ¿Qué es Shell? para profundizar en qué es un shell y cómo puede ayudarte. 

Esencialmente, un shell permite a los usuarios y a otros programas comunicarse directamente con los componentes de un sistema operativo.

Introducción al Shell Scripting 

Shell Scripting es una parte importante y fácil de aprender (aunque no tengas conocimientos de programación) de la comunicación con el sistema operativo de un ordenador. Por scripting, nos referimos a una secuencia de comandos del shell y del sistema operativo que se escriben y luego se almacenan en un archivo: las operaciones típicas que realizan los scripts del shell incluyen tareas como la manipulación de archivos, la ejecución de programas y la impresión de texto. 

Aprende más sobre Procesamiento de datos en Shell con nuestro curso. 

Aprender a realizar este sencillo procedimiento puede ahorrar a los desarrolladores una cantidad significativa de tiempo de desarrollo, ya que determinados comandos no tendrán que escribirse manualmente de forma repetida; incluso es posible programar secuencias de comandos para que se ejecuten automáticamente. 

Hay varios shells diferentes a disposición de los usuarios de Unix y Linux. Para el resto de este tutorial, nos centraremos específicamente en el Bourne Again SHell (bash), que es una versión mejorada del Bourne shell y es una de las interfaces de línea de comandos más comunes para los sistemas operativos basados en Unix (incluido Linux). 

¿Qué es un Bash Script? 

Bash es una interfaz de línea de comandos Unix responsable de interactuar con el sistema operativo de un ordenador. Del mismo modo que los guiones de las películas informan a los actores de las acciones que deben realizar, un guión bash indica al shell bash lo que debe hacer. Así, un bash script es una forma útil de agrupar comandos para crear un programa

Cualquier comando que pudieras ejecutar directamente desde la línea de comandos se puede poner en un bash script, y puedes esperar que realice las mismas acciones que realizaría desde la línea de comandos. Alternativamente, cualquier comando que introduzcas en tu bash script podría ejecutarse directamente desde la línea de comandos, y el resultado debería ser el mismo. En otras palabras, si sabes cómo interactuar con tu ordenador desde la línea de comandos, ya sabes bastante sobre la programación bash. 

Una de las principales diferencias es que un bash script es un archivo de texto plano que se almacena con una extensión .sh por convención (aunque pueden ejecutarse sin la extensión .sh ). 

Otra distinción de los bash scripts es el "shebang" que aparece en la primera línea de todos los scripts. Básicamente, el shebang es una ruta absoluta al intérprete bash formada por una combinación de bash "#" y bang "!" seguida de la ruta del intérprete bash. Se utiliza para indicar al sistema operativo Linux qué intérprete debe utilizar para analizar el archivo. 

Cómo escribir un Bash Script

Vamos a construir un sencillo bash script "Hello World" de ejemplo para iniciarte en el bash script. Si deseas profundizar en el Bash scripting, consulta el curso Introducción al Bash Scripting

Paso 1: crear un nuevo archivo de texto sin formato 

El primer paso es crear un nuevo archivo de texto sin formato. Puedes hacerlo ejecutando el siguiente comando desde tu símbolo del sistema: 

notepad hello_world.sh

Nota: al ejecutar este comando puede aparecer un aviso preguntándote si deseas crear un nuevo archivo; selecciona "Yes". 

Paso 2: especificar el intérprete

En la primera línea de nuestro script, debemos especificar qué intérprete queremos utilizar para analizar nuestro script. En este caso, es Bash. Por tanto, debemos poner el shebang en la primera línea de nuestro script. 

#!/bin/bash

Paso 3: implementar comandos

El objetivo de nuestro bash script es imprimir "Hello World!". Para realizar esta tarea, pasa a una nueva línea y utiliza el comando echo seguido de la cadena que queramos imprimir.

echo "Hello World!" 

Una vez completado, guarda el archivo y abre tu Git Bash.  

Nota: Puedes descargar Git Bash desde Git downloads. Sólo tienes que seleccionar la versión de Git que se corresponda con tu sistema operativo. 

A continuación, ejecuta el siguiente comando: 

bash hello_world.sh

Debería salir "Hello World!" como se ve en la Figura 1. 

Una llamada al bash script devuelve "Hello World!" en el terminal.

Figura 1: La salida de nuestro Bash Script

 

Cómo capturar la entrada del usuario en Bash Scripts

Ahora ya sabes cómo escribir un sencillo script "Hello World! Veamos cómo podemos utilizar bash para escribir scripts que requieran la introducción de datos por parte del usuario. En este ejemplo, crearemos un generador de actividades, que preguntará al usuario su nombre y, a continuación, elegirá una actividad aleatoria para invitar al usuario a participar en ella de entre un conjunto de actividades. 

Los pasos para crear el archivo son los mismos que en Cómo escribir un Bash Script, la diferencia son los comandos que introducimos en nuestro bash script. 

  1. Crea un nuevo archivo de texto sin formato desde el símbolo del sistema utilizando el bloc de notas.
notepad generate-activity.sh 
  1. Especifica el intérprete bash introduciendo el shebang en la primera línea del script.
#!/bin/bash
  1. Escribe los comandos para ejecutar el script y luego guarda el archivo.

Ahora, cuando llamemos a nuestro bash script desde el terminal, deberíamos esperar ver la misma salida que en la Figura 2. 

#!/bin/bash

# Greet user and request their name
echo "The activity generator"
read -p "What is your name? " name

# Create an array of activities
activity[0]="Football"
activity[1]="Table Tennis"
activity[2]="8 Ball Pool"
activity[3]="PS5"
activity[4]="Blackjack"

array_length=${#activity[@]} # Store the length of the array
index=$(($RANDOM % $array_length)) # Randomly select an index from 0 to array_length

# Invite the user to join you participate in an activity
echo "Hi" $name, "would you like to play" ${activity[$index]}"?"
read -p "Answer: " answer

Demostración del script generate-activityshFigura 2: Demostración del script generate-activity.sh.

Cómo crear una función en un Bash Script

En programación, las funciones se utilizan para agrupar un conjunto de instrucciones repetidas. Consulta más información sobre Funciones en Python. El propósito de escribir funciones es evitar escribir el mismo código constantemente, y también hace que tu código sea más legible. 

Una función bash puede considerarse una función típica: un conjunto de comandos que pueden llamarse varias veces. Sin embargo, las funciones bash son algo más limitadas que las de la mayoría de los lenguajes de programación (es decir, las funciones bash no te permiten devolver un valor cuando se las llama). 

Antes de crear un bash script utilizando una función, echemos un vistazo a la sintaxis para declarar una función bash. Podemos definir una función escribiendo un nombre de función, seguido de paréntesis y llaves para el cuerpo de la función: ésta es la forma más habitual de escribir una función en bash. Así se ve en código: 

# Most common way to write a bash function.
example_function () {
  commands
{

La otra forma de formatear una función bash es empezar la línea con la función reserved bash keyword, luego el nombre de la función y el cuerpo de la función entre llaves (no necesitamos los paréntesis). 

# Another way to write a bash function.
function example_function {
  commands
{

Definir la función no ejecutará los comandos. Para invocar una función bash, debes llamar al nombre de la función, como se indica a continuación: 

#!/bin/bash

# A hello world bash function
hello_world () {
  echo "Hello World!"
}

# Invoking the hello_world function
hello_world

Arriba, hemos creado una función hello_world que imprime "Hello World!" cuando se ejecuta el bash script.

Pasar argumentos a funciones bash

Los argumentos son variables que se utilizan en una función concreta. En bash, no podemos pasar argumentos a las funciones como harías en lenguajes de programación de alto nivel como Python, Julia, etc. En cambio, las funciones bash tienen su propio argumento en la línea de comandos y podemos pasar parámetros a una función colocándolos después de una llamada al nombre de la función, separados por un espacio si hay varios argumentos.

En esencia, los argumentos de la función se tratan como parámetros posicionales y las variables shell ($1, $2, ..., $n) se utilizan para acceder a los argumentos pasados a la función. 

#!/bin/bash
greet () {
  echo "Hello $1 $2"
}

greet "John" "Doe" 

En el bash script anterior, pasamos dos argumentos, John y Doe, a nuestra función saludar. Al ejecutar ahora el bash script, deberíamos ver la siguiente salida:

Hello John Doe

Escribir sentencias "If" en Bash

Las sentencias "If" son sentencias condicionales utilizadas en los lenguajes de programación. Si se demuestra que una afirmación es cierta, se ejecutaría una condición. Esta funcionalidad nos permite determinar las circunstancias en las que se ejecutará un determinado fragmento de código. 

En bash, empezamos la condicional con una sentencia if y la terminamos con fi (if escrito al revés). Aquí tienes un ejemplo de bash script con condicionales if: 

#!/bin/bash

read -p "Give me a number: " number
if [ $number -gt 10 ];
then
  echo "Your number is greater than 10."
fi

En el bash script anterior, se pide al usuario que proporcione un número. Si el número proporcionado por el usuario es mayor que 10, se mostrará en el terminal "Your number is greater than 10", pero si no lo es, el programa finalizará. La figura 3 es un ejemplo en el que pasamos un número mayor que 10. 

Uso de sentencias if en scripts Bash

Figura 3: Uso de sentencias "if" en scripts Bash

Resumen 

Los scripts de Bash son una forma útil de agrupar comandos de forma elegante. Podrías aprovechar la potencia de un bash script para varios casos de uso, como ejecutar un comando shell, ejecutar varios comandos juntos, personalizar tareas administrativas, realizar automatización de tareas, etc. 

Siguiendo los pasos del tutorial anterior, ya sabes cómo crear un sencillo script para imprimir "Hello World!" utilizando Bash. 

Temas

Cursos de Bash Scripting

curso

Data Processing in Shell

4 hr
19.2K
Learn powerful command-line skills to download, process, and transform data, including machine learning pipeline.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

blog

¿Qué es shell?

Descubre qué es shell y cómo aprenderlo puede convertirte en un científico de datos más eficiente y versátil.

Wendy Gittleson

13 min

tutorial

Tutorial sobre cómo ejecutar scripts en Python

Aprenda cómo puede ejecutar un script Python desde la línea de comandos, y también cómo puede proporcionar argumentos de línea de comandos a su script.
Aditya Sharma's photo

Aditya Sharma

10 min

tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

14 min

tutorial

Tutorial sobre la ejecución de scripts de Python en Power BI

Descubre las distintas formas de utilizar Python para optimizar el análisis, la visualización y el modelado de datos en Power BI.
Joleen Bothma's photo

Joleen Bothma

9 min

tutorial

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Abid Ali Awan's photo

Abid Ali Awan

17 min

See MoreSee More