Clase 01 — Variables y Tipos de Datos
Declarar variables
En Bash, las variables se crean sin necesidad de declarar un tipo. No uses espacios alrededor del =.
#!/bin/bash
# Correcto
nombre="RoxsRoss"
edad=30
# Incorrecto (dará error)
# nombre = "RoxsRoss"
Acceder al valor de una variable
Usá el prefijo $ o ${}:
#!/bin/bash
nombre="DevOps"
echo "Hola, $nombre"
echo "Hola, ${nombre}Engineer" # Usar {} para delimitar
Salida:
Hola, DevOps
Hola, DevOpsEngineer
Variables de entorno vs variables locales
#!/bin/bash
# Variable local (solo en este script)
mi_variable="soy local"
# Variable de entorno (disponible en procesos hijos)
export MI_VARIABLE_ENV="soy global"
echo "Local: $mi_variable"
echo "Entorno: $MI_VARIABLE_ENV"
# Ver todas las variables de entorno
env | head -5
Variables especiales del sistema
#!/bin/bash
echo "HOME : $HOME"
echo "USER : $USER"
echo "PATH : $PATH"
echo "PWD : $PWD"
echo "SHELL : $SHELL"
echo "HOSTNAME : $HOSTNAME"
echo "RANDOM : $RANDOM" # Número aleatorio
echo "SECONDS : $SECONDS" # Segundos desde inicio del script
Variables especiales de scripts
#!/bin/bash
# Ejecutar: ./variables-especiales.sh arg1 arg2 arg3
echo "Nombre del script : $0"
echo "Primer argumento : $1"
echo "Segundo argumento : $2"
echo "Todos los args : $@"
echo "Número de args : $#"
echo "PID del script : $$"
echo "Último exit code : $?"
Tipos de datos
Bash trata todo como strings por defecto, pero podemos trabajar con números.
Strings
#!/bin/bash
saludo="Hola"
nombre="Mundo"
# Concatenar strings
mensaje="$saludo, $nombre!"
echo "$mensaje"
# Longitud de un string
echo "Longitud: ${#mensaje}"
# Substring (posición 0, longitud 4)
echo "Substring: ${mensaje:0:4}"
# Reemplazar en string
frase="Hola Mundo Hola"
echo "Reemplazar primero: ${frase/Hola/Chao}"
echo "Reemplazar todos : ${frase//Hola/Chao}"
# Mayúsculas y minúsculas (Bash 4+)
texto="hola mundo"
echo "Mayúsculas: ${texto^^}"
echo "Minúsculas: ${texto,,}"
echo "Primera mayúscula: ${texto^}"
Números y aritmética
#!/bin/bash
a=10
b=3
# Aritmética con $(( ))
echo "Suma : $((a + b))"
echo "Resta : $((a - b))"
echo "Producto : $((a * b))"
echo "División : $((a / b))" # División entera
echo "Módulo : $((a % b))"
echo "Potencia : $((a ** b))"
# Incrementar / Decrementar
contador=0
((contador++))
echo "Contador: $contador"
((contador += 5))
echo "Contador: $contador"
# Usando let
let "resultado = a + b"
echo "let resultado: $resultado"
declare para tipos
#!/bin/bash
# Variable de solo lectura
declare -r PI=3.14159
echo "PI = $PI"
# PI=0 # Error: no se puede modificar
# Entero
declare -i numero=42
echo "Número: $numero"
# Array
declare -a frutas=("manzana" "pera" "uva")
echo "Frutas: ${frutas[@]}"
# Array asociativo (Bash 4+)
declare -A colores
colores[rojo]="#FF0000"
colores[verde]="#00FF00"
echo "Rojo: ${colores[rojo]}"
Ejemplo práctico: Calculadora simple
#!/bin/bash
# calculadora.sh - Calculadora básica con variables
num1=15
num2=4
echo "=============================="
echo " CALCULADORA BASH"
echo "=============================="
echo "Número 1: $num1"
echo "Número 2: $num2"
echo "------------------------------"
echo "Suma : $((num1 + num2))"
echo "Resta : $((num1 - num2))"
echo "Producto : $((num1 * num2))"
echo "División : $((num1 / num2))"
echo "Módulo : $((num1 % num2))"
echo "=============================="
Ejercicios
- Creá un script que defina tu nombre, edad y ciudad, y los imprima en formato:
"Me llamo X, tengo Y años y vivo en Z" - Creá un script que reciba 2 números como argumentos y muestre todas las operaciones aritméticas
- Investigá qué pasa si intentás modificar una variable
readonly