Saltar al contenido principal

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

  1. 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"
  2. Creá un script que reciba 2 números como argumentos y muestre todas las operaciones aritméticas
  3. Investigá qué pasa si intentás modificar una variable readonly