GNU Bash

Bash

Tutorial Bash: Variables y tipos de datos

Bash variables y tipos de datos: explora asignación, alcance, y tipos en scripts. Aprende técnicas avanzadas para automatización efectiva en Shell.

Definición y asignación de variables en Bash

En Bash, las variables son fundamentales para la creación de scripts y la automatización de tareas en el entorno Shell. La definición y asignación de variables en Bash es un proceso sencillo pero esencial para manipular datos y controlar el flujo de los Bash scripts. En Bash, la asignación de una variable se realiza sin ningún espacio entre el nombre de la variable, el signo igual y el valor que se le asigna. Por ejemplo:

variable="valor"

Es importante destacar que Bash es sensible a las mayúsculas y minúsculas, por lo que variable, Variable y VARIABLE serían consideradas como tres variables distintas.

Para utilizar el valor almacenado en una variable, se antepone el símbolo $ al nombre de la variable:

echo $variable

Este comando imprimirá "valor" en la salida estándar.

Las variables en Bash no requieren una declaración previa de tipo. Todo lo que se almacena en una variable es tratado como texto. Sin embargo, si se necesita realizar operaciones aritméticas, Bash permite la evaluación de expresiones numéricas utilizando el comando let, (( )) o expr. Por ejemplo:

numero1=5
numero2=10
let suma=numero1+numero2
echo $suma

O utilizando la sintaxis (( )):

suma=$((numero1 + numero2))
echo $suma

Las variables también pueden ser exportadas para que estén disponibles en subprocesos (subshells). Esto se hace usando el comando export:

export variable="valor"

De esta manera, la variable estará disponible para cualquier script o comando ejecutado desde el Shell donde se ha definido.

Es importante tener en cuenta que las variables definidas de esta manera son variables de entorno solo para el Shell actual y sus procesos hijos. Al cerrar el Shell, estas variables se perderán a menos que se definan en archivos de configuración como .bashrc o .bash_profile.

En resumen, la definición y asignación de variables en Bash es una operación directa que permite gestionar datos de manera eficiente en Bash scripts y comandos Linux.

Tipos de datos en Bash

En Bash, no se manejan tipos de datos en el sentido tradicional que encontramos en lenguajes de programación como Java o C++. En lugar de eso, todas las variables son tratadas como cadenas de texto. Sin embargo, Bash proporciona mecanismos para trabajar con diferentes tipos de datos de manera efectiva.

  • Cadenas de texto: Por defecto, cualquier valor asignado a una variable en Bash es tratado como una cadena de texto. Esto facilita la manipulación de datos textuales y es útil para scripts que procesan texto. Para manejar cadenas, se pueden utilizar operadores como concatenación y comparación:
cadena1="Hola"
cadena2="Mundo"
cadena_concatenada="$cadena1 $cadena2"
echo $cadena_concatenada  # Salida: Hola Mundo
  • Números enteros: Aunque Bash no tiene un tipo de dato numérico específico, permite realizar operaciones aritméticas sobre variables que contienen valores numéricos. Esto se logra mediante el uso de ciertas construcciones de Bash como let, (( )), o expr:
numero1=10
numero2=20
suma=$((numero1 + numero2))
echo $suma  # Salida: 30
  • Booleanos: Bash no tiene un tipo de dato booleano explícito. Sin embargo, los valores booleanos se manejan a través de códigos de salida de los comandos, donde un 0 indica éxito (verdadero) y cualquier valor distinto de 0 indica fallo (falso). Esto es especialmente útil en construcciones de control de flujo:
if [ $numero1 -lt $numero2 ]; then
    echo "numero1 es menor que numero2"
fi
  • Matrices: Bash permite la definición de matrices, aunque todas las entradas de la matriz son tratadas como cadenas de texto. Las matrices se definen utilizando paréntesis:
matriz=(uno dos tres)
echo ${matriz[0]}  # Salida: uno

Las matrices en Bash son unidimensionales, pero se pueden emular matrices multidimensionales mediante el uso de índices calculados.

  • Asociaciones (Arrays asociativos): A partir de Bash 4, se introdujeron los arrays asociativos, que permiten almacenar pares clave-valor. Se declaran usando declare -A:
declare -A capitales
capitales[España]="Madrid"
capitales[Francia]="París"
echo ${capitales[España]}  # Salida: Madrid

Cada uno de estos tipos de datos es una herramienta útil para la creación de scripts en Bash. Al entender cómo Bash maneja las variables y los tipos de datos, los desarrolladores pueden escribir scripts más eficientes y efectivos para automatizar tareas en el entorno Shell.

Scope de las variables

En Bash, el scope o alcance de las variables determina en qué partes de un Bash script o entorno Shell una variable es accesible. Este concepto es esencial para evitar conflictos de nombres y asegurar que las variables se comporten de manera predecible en diferentes contextos.

  • Alcance local: Por defecto, las variables en Bash tienen un alcance local al proceso o Shell en el que se definen. Esto significa que una variable definida en un script o función no será accesible fuera de ese script o función. Para definir una variable con alcance local dentro de una función, se utiliza la palabra clave local:
function mi_funcion {
    local variable_local="valor_local"
    echo $variable_local  # Salida: valor_local
}

mi_funcion
echo $variable_local  # No imprimirá nada, ya que la variable es local a la función
  • Alcance global: Una variable que no está declarada con local dentro de una función tiene un alcance global, lo que significa que es accesible desde el entorno donde se definió, así como desde cualquier función llamada posteriormente. Sin embargo, es importante tener cuidado al usar variables globales para evitar modificaciones accidentales:
variable_global="valor_global"

function mi_funcion {
    echo $variable_global  # Salida: valor_global
}

mi_funcion
  • Subshells y exportación: Cuando un Bash script o comando se ejecuta en un subshell, las variables definidas en el Shell padre no están disponibles a menos que se exporten. La exportación de una variable hace que esté disponible para los procesos hijos:
variable="inicial"
export variable

bash -c 'echo $variable'  # Salida: inicial

Sin export, el subshell no tendría acceso a variable.

  • Variables de entorno: Las variables de entorno son un tipo especial de variables globales que están disponibles para todos los procesos iniciados por el Shell. Se configuran usando export y se utilizan comúnmente para configurar parámetros del sistema y del entorno de Shell:
export PATH=$PATH:/nuevo/directorio
  • Ámbito de los scripts: Cuando se ejecuta un script Bash, este se ejecuta en un subshell, por lo que las variables definidas dentro del script no afectan al Shell padre a menos que el script se ejecute con el comando source o . (punto), lo cual hace que el script se ejecute en el Shell actual:
# script.sh
variable_script="valor_script"

# En el Shell
. script.sh
echo $variable_script  # Salida: valor_script

La comprensión del alcance de las variables en Bash es crucial para escribir Bash scripts robustos y predecibles, especialmente al manipular variables en diferentes funciones y scripts. Esto permite a los desarrolladores gestionar eficazmente el comportamiento de las variables en entornos complejos de comandos Linux y Shell.

Variables especiales y predefinidas

En Bash, las variables especiales y predefinidas son un conjunto de variables que el Shell gestiona de forma automática. Estas variables proporcionan información útil sobre el entorno del Bash script y permiten interactuar con el sistema y los comandos Linux de manera eficiente.

  • Variables posicionales: Representan los argumentos pasados a un Bash script o función. $0 contiene el nombre del script, mientras que $1, $2, etc., contienen los argumentos. $# indica el número de argumentos pasados:
echo "Nombre del script: $0"
echo "Primer argumento: $1"
echo "Número de argumentos: $#"
  • Variables de entorno: Algunas variables predefinidas como PATH, HOME, USER, y SHELL proporcionan información sobre el entorno del usuario y el sistema. Se pueden utilizar directamente en los scripts para personalizar el comportamiento del Shell:
echo "Directorio de inicio: $HOME"
echo "Usuario actual: $USER"
  • Variables de estado y control:
  • $?: Almacena el código de salida del último comando ejecutado. Un valor de 0 indica que el comando fue exitoso.
  • $$: Contiene el ID de proceso (PID) del Shell actual.
  • $!: Proporciona el PID del último proceso ejecutado en segundo plano.
ls
echo "Código de salida del último comando: $?"
echo "PID del Shell actual: $$"
  • Variables de Shell:
  • $* y $@: Representan todos los argumentos pasados al script. La diferencia es notable cuando se usan entre comillas dobles.
    • "$*" trata todos los argumentos como una sola cadena, separada por el primer carácter de IFS.
    • "$@" trata cada argumento como una cadena individual.
  • $-: Muestra las opciones de Shell activas.
  • $_: Contiene el último argumento del último comando ejecutado.
echo "Todos los argumentos (como una sola palabra): $*"
echo "Todos los argumentos (individualmente): $@"
  • Variables de control del entorno:
  • IFS (Internal Field Separator): Define el delimitador que Bash usa para dividir palabras. Por defecto, es el espacio, tabulador y nueva línea.
  • PS1, PS2: Son las variables que definen el prompt del Shell. PS1 es el prompt principal y PS2 es el prompt secundario usado en comandos multilinea.
echo "Delimitador actual: $IFS"
echo "Prompt principal: $PS1"

Comprender y utilizar estas variables especiales y predefinidas es crucial para escribir Bash scripts eficientes y robustos. Estas variables permiten que el script interactúe de manera más efectiva con el entorno de Shell y los comandos Linux, proporcionando un control detallado sobre la ejecución y el comportamiento del script.bash_16_variables.md

Definición y asignación de variables en Bash

En Bash, las variables son fundamentales para la creación de scripts y la automatización de tareas en el entorno Shell. La definición y asignación de variables en Bash es un proceso sencillo pero esencial para manipular datos y controlar el flujo de los Bash scripts. En Bash, la asignación de una variable se realiza sin ningún espacio entre el nombre de la variable, el signo igual y el valor que se le asigna. Por ejemplo:

variable="valor"

Es importante destacar que Bash es sensible a las mayúsculas y minúsculas, por lo que variable, Variable y VARIABLE serían consideradas como tres variables distintas.

Para utilizar el valor almacenado en una variable, se antepone el símbolo $ al nombre de la variable:

echo $variable

Este comando imprimirá "valor" en la salida estándar.

Las variables en Bash no requieren una declaración previa de tipo. Todo lo que se almacena en una variable es tratado como texto. Sin embargo, si se necesita realizar operaciones aritméticas, Bash permite la evaluación de expresiones numéricas utilizando el comando let, (( )) o expr. Por ejemplo:

numero1=5
numero2=10
let suma=numero1+numero2
echo $suma

O utilizando la sintaxis (( )):

suma=$((numero1 + numero2))
echo $suma

Las variables también pueden ser exportadas para que estén disponibles en subprocesos (subshells). Esto se hace usando el comando export:

export variable="valor"

De esta manera, la variable estará disponible para cualquier script o comando ejecutado desde el Shell donde se ha definido.

Es importante tener en cuenta que las variables definidas de esta manera son variables de entorno solo para el Shell actual y sus procesos hijos. Al cerrar el Shell, estas variables se perderán a menos que se definan en archivos de configuración como .bashrc o .bash_profile.

En resumen, la definición y asignación de variables en Bash es una operación directa que permite gestionar datos de manera eficiente en Bash scripts y comandos Linux.

Tipos de datos en Bash

En Bash, no se manejan tipos de datos en el sentido tradicional que encontramos en lenguajes de programación como Java o C++. En lugar de eso, todas las variables son tratadas como cadenas de texto. Sin embargo, Bash proporciona mecanismos para trabajar con diferentes tipos de datos de manera efectiva.

  • Cadenas de texto: Por defecto, cualquier valor asignado a una variable en Bash es tratado como una cadena de texto. Esto facilita la manipulación de datos textuales y es útil para scripts que procesan texto. Para manejar cadenas, se pueden utilizar operadores como concatenación y comparación:
cadena1="Hola"
cadena2="Mundo"
cadena_concatenada="$cadena1 $cadena2"
echo $cadena_concatenada  # Salida: Hola Mundo
  • Números enteros: Aunque Bash no tiene un tipo de dato numérico específico, permite realizar operaciones aritméticas sobre variables que contienen valores numéricos. Esto se logra mediante el uso de ciertas construcciones de Bash como let, (( )), o expr:
numero1=10
numero2=20
suma=$((numero1 + numero2))
echo $suma  # Salida: 30
  • Booleanos: Bash no tiene un tipo de dato booleano explícito. Sin embargo, los valores booleanos se manejan a través de códigos de salida de los comandos, donde un 0 indica éxito (verdadero) y cualquier valor distinto de 0 indica fallo (falso). Esto es especialmente útil en construcciones de control de flujo:
if [ $numero1 -lt $numero2 ]; then
    echo "numero1 es menor que numero2"
fi
  • Matrices: Bash permite la definición de matrices, aunque todas las entradas de la matriz son tratadas como cadenas de texto. Las matrices se definen utilizando paréntesis:
matriz=(uno dos tres)
echo ${matriz[0]}  # Salida: uno

Las matrices en Bash son unidimensionales, pero se pueden emular matrices multidimensionales mediante el uso de índices calculados.

  • Asociaciones (Arrays asociativos): A partir de Bash 4, se introdujeron los arrays asociativos, que permiten almacenar pares clave-valor. Se declaran usando declare -A:
declare -A capitales
capitales[España]="Madrid"
capitales[Francia]="París"
echo ${capitales[España]}  # Salida: Madrid

Cada uno de estos tipos de datos es una herramienta útil para la creación de scripts en Bash. Al entender cómo Bash maneja las variables y los tipos de datos, los desarrolladores pueden escribir scripts más eficientes y efectivos para automatizar tareas en el entorno Shell.

Scope de las variables

En Bash, el scope o alcance de las variables determina en qué partes de un Bash script o entorno Shell una variable es accesible. Este concepto es esencial para evitar conflictos de nombres y asegurar que las variables se comporten de manera predecible en diferentes contextos.

  • Alcance local: Por defecto, las variables en Bash tienen un alcance local al proceso o Shell en el que se definen. Esto significa que una variable definida en un script o función no será accesible fuera de ese script o función. Para definir una variable con alcance local dentro de una función, se utiliza la palabra clave local:
function mi_funcion {
    local variable_local="valor_local"
    echo $variable_local  # Salida: valor_local
}

mi_funcion
echo $variable_local  # No imprimirá nada, ya que la variable es local a la función
  • Alcance global: Una variable que no está declarada con local dentro de una función tiene un alcance global, lo que significa que es accesible desde el entorno donde se definió, así como desde cualquier función llamada posteriormente. Sin embargo, es importante tener cuidado al usar variables globales para evitar modificaciones accidentales:
variable_global="valor_global"

function mi_funcion {
    echo $variable_global  # Salida: valor_global
}

mi_funcion
  • Subshells y exportación: Cuando un Bash script o comando se ejecuta en un subshell, las variables definidas en el Shell padre no están disponibles a menos que se exporten. La exportación de una variable hace que esté disponible para los procesos hijos:
variable="inicial"
export variable

bash -c 'echo $variable'  # Salida: inicial

Sin export, el subshell no tendría acceso a variable.

  • Variables de entorno: Las variables de entorno son un tipo especial de variables globales que están disponibles para todos los procesos iniciados por el Shell. Se configuran usando export y se utilizan comúnmente para configurar parámetros del sistema y del entorno de Shell:
export PATH=$PATH:/nuevo/directorio
  • Ámbito de los scripts: Cuando se ejecuta un script Bash, este se ejecuta en un subshell, por lo que las variables definidas dentro del script no afectan al Shell padre a menos que el script se ejecute con el comando source o . (punto), lo cual hace que el script se ejecute en el Shell actual:
# script.sh
variable_script="valor_script"

# En el Shell
. script.sh
echo $variable_script  # Salida: valor_script

La comprensión del alcance de las variables en Bash es crucial para escribir Bash scripts robustos y predecibles, especialmente al manipular variables en diferentes funciones y scripts. Esto permite a los desarrolladores gestionar eficazmente el comportamiento de las variables en entornos complejos de comandos Linux y Shell.

Variables especiales y predefinidas

En Bash, las variables especiales y predefinidas son un conjunto de variables que el Shell gestiona de forma automática. Estas variables proporcionan información útil sobre el entorno del Bash script y permiten interactuar con el sistema y los comandos Linux de manera eficiente.

  • Variables posicionales: Representan los argumentos pasados a un Bash script o función. $0 contiene el nombre del script, mientras que $1, $2, etc., contienen los argumentos. $# indica el número de argumentos pasados:
echo "Nombre del script: $0"
echo "Primer argumento: $1"
echo "Número de argumentos: $#"
  • Variables de entorno: Algunas variables predefinidas como PATH, HOME, USER, y SHELL proporcionan información sobre el entorno del usuario y el sistema. Se pueden utilizar directamente en los scripts para personalizar el comportamiento del Shell:
echo "Directorio de inicio: $HOME"
echo "Usuario actual: $USER"
  • Variables de estado y control:
  • $?: Almacena el código de salida del último comando ejecutado. Un valor de 0 indica que el comando fue exitoso.
  • $$: Contiene el ID de proceso (PID) del Shell actual.
  • $!: Proporciona el PID del último proceso ejecutado en segundo plano.
ls
echo "Código de salida del último comando: $?"
echo "PID del Shell actual: $$"
  • Variables de Shell:
  • $* y $@: Representan todos los argumentos pasados al script. La diferencia es notable cuando se usan entre comillas dobles.
    • "$*" trata todos los argumentos como una sola cadena, separada por el primer carácter de IFS.
    • "$@" trata cada argumento como una cadena individual.
  • $-: Muestra las opciones de Shell activas.
  • $_: Contiene el último argumento del último comando ejecutado.
echo "Todos los argumentos (como una sola palabra): $*"
echo "Todos los argumentos (individualmente): $@"
  • Variables de control del entorno:
  • IFS (Internal Field Separator): Define el delimitador que Bash usa para dividir palabras. Por defecto, es el espacio, tabulador y nueva línea.
  • PS1, PS2: Son las variables que definen el prompt del Shell. PS1 es el prompt principal y PS2 es el prompt secundario usado en comandos multilinea.
echo "Delimitador actual: $IFS"
echo "Prompt principal: $PS1"

Comprender y utilizar estas variables especiales y predefinidas es crucial para escribir Bash scripts eficientes y robustos. Estas variables permiten que el script interactúe de manera más efectiva con el entorno de Shell y los comandos Linux, proporcionando un control detallado sobre la ejecución y el comportamiento del script.

Certifícate en Bash con CertiDevs PLUS

Ejercicios de esta lección Variables y tipos de datos

Evalúa tus conocimientos de esta lección Variables y tipos de datos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Bash

Accede a todas las lecciones de Bash y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Principales Distribuciones De Linux

GNU Bash

Introducción Y Entorno

Instalar Ubuntu En Windows Con Wsl

GNU Bash

Introducción Y Entorno

Introducción A Shell Y Bash

GNU Bash

Introducción Y Entorno

Comandos De Navegación Pwd, Cd Y Ls

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Manipulación De Archivos Y Directorios

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Comprimir Y Descomprimir Archivos En Bash Con Tar Y Gzip

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Manipulación De Permisos De Archivos Y Directorios Con Chmod, Chown Y Chgrp

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Enlaces Simbólicos Y Duros

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Redirección Y Tuberías

GNU Bash

Navegación Y Gestión De Archivos Y Directorios

Gestión De Procesos Con Ps, Htop Y Pgrep

GNU Bash

Gestión De Procesos Y Servicios

Gestión De Servicios Con Systemd

GNU Bash

Gestión De Procesos Y Servicios

Configuración De Bash

GNU Bash

Interacción Con El Sistema

Redes Y Comunicación Con Ifconfig, Ip Y Netstat

GNU Bash

Interacción Con El Sistema

Transferencia De Archivos Y Comunicación Remota Con Ssh

GNU Bash

Interacción Con El Sistema

Gestión De Paquetes Y Dependencias Y Actualización Del Sistema

GNU Bash

Interacción Con El Sistema

Variables Y Tipos De Datos

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Operadores

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Sintaxis De Control De Flujo

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Expresiones Regulares Y Manipulación De Texto

GNU Bash

Sintaxis Y Creación De Scripts En Bash

Definición Y Uso De Funciones

GNU Bash

Sintaxis Y Creación De Scripts En Bash

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la sintaxis de definición y asignación de variables en Bash.
  • Identificar y utilizar tipos de datos fundamentales: cadenas, enteros, booleanos, matrices.
  • Aplicar el conocimiento del alcance de las variables en scripts Bash.
  • Usar variables especiales y predefinidas para gestionar scripts eficientemente.
  • Exportar variables y entender su impacto en subshells y procesos.