Apuntes bash

No es un bug, es una característica del shell.

Variables en Scripts de Bash

Definición y uso de variables dentro de scripts

Las variables se usan para almacenar datos, como texto, números o resultados de comandos, que luego pueden ser reutilizados. Las variables se definen asignando un valor con = y se acceden anteponiendo $ al nombre de la variable. No se requiere declarar el tipo de variable, ya que Bash las trata como cadenas.

Ejemplo:


#!/bin/bash
# Definir variables
NOMBRE="Usuario"
EDAD=25
# Usar variables
echo "Hola, $NOMBRE. Tienes $EDAD años."

Nota: No dejes espacios alrededor del = al definir una variable (por ejemplo, NOMBRE = "Usuario" dará error). Y como acabamos de ver, recuerda que las variables definidas en un script son locales al script, a menos que se exporten con export.

Capturar entrada del usuario con read

El comando read permite capturar entrada del usuario desde la terminal y almacenarla en una variable. Es útil para hacer scripts interactivos.

Ejemplo básico:


#!/bin/bash
echo "Ingresa tu nombre:"
read NOMBRE
echo "Hola, $NOMBRE!"

Puedes usar opciones con read, como -p para mostrar un mensaje sin necesidad de echo:


#!/bin/bash
read -p "Ingresa tu edad: " EDAD
echo "Tienes $EDAD años."

Nota: Si no especificas una variable, read almacena la entrada en la variable especial REPLY.

Sustitución de comandos

La sustitución de comandos permite ejecutar un comando y usar su salida como valor en un script. Se logra encerrando el comando entre $( ). Es útil para capturar resultados dinámicos, como la fecha, el directorio actual o el contenido de un archivo.

Ejemplo:


#!/bin/bash
# Capturar el directorio actual
DIRECTORIO=$(pwd)
echo "Estás en: $DIRECTORIO"
# Capturar la fecha actual
FECHA=$(date)
echo "Hoy es: $FECHA"

La sustitución de comandos también puede usarse dentro de otros comandos:


#!/bin/bash
# Contar archivos en el directorio actual
NUM_ARCHIVOS=$(ls | wc -l)
echo "Hay $NUM_ARCHIVOS archivos en este directorio."

Nota: Aunque `comando` (comillas invertidas) también funciona para sustitución de comandos, $( ) es más legible y permite anidamiento, como $(comando1 $(comando2)).

TOP