Programación en el shell
La programación en el shell, implica escribir scripts que contienen una serie de comandos del sistema operativo que se ejecutan de manera secuencial. Estos scripts son interpretados por el shell, que es un intérprete de comandos que actúa como una interfaz entre el usuario y el núcleo del sistema operativo.
Variables en Shell:
Se puede usar variables para almacenar valores y referenciarlos en tu script. La asignación de variables se realiza sin espacios alrededor del signo igual (=
):
NOMBRE="Juan" EDAD=25 echo "Hola, $NOMBRE. Tienes $EDAD años."
Parámetros del Script:
Cuando ejecutas un script, puedes pasarle parámetros desde la línea de comandos. Estos parámetros se almacenan en variables especiales como $1
, $2
, etc.
#!/bin/bash echo "El primer parámetro es: $1" echo "El segundo parámetro es: $2"
Entrada/Salida Estándar:
Puedes leer datos desde la entrada estándar usando el comando read
y mostrar resultados en la salida estándar con echo
.
echo "¿Cuál es tu nombre?" read NOMBRE echo "Hola, $NOMBRE. ¡Bienvenido!"
Redirección y Piping:
Puedes redirigir la entrada y salida estándar utilizando los operadores >
, <
, y |
. Esto te permite manejar archivos y conectar la salida de un comando con la entrada de otro.
# Redirigir salida a un archivo echo "Hola, Mundo" > archivo.txt # Leer desde un archivo read LINEA < archivo.txt # Pipe (enviar salida de un comando como entrada a otro) ls -l | grep ".txt"
Expresiones Condicionales:
Puedes utilizar construcciones condicionales como if
, else
, y elif
para tomar decisiones en tu script.
EDAD=18 if [ "$EDAD" -ge 18 ]; then echo "Eres mayor de edad." else echo "Eres menor de edad." fi
Ciclos:
Además del bucle for
que ya se mencionó, también puedes usar bucles while
para ejecutar comandos repetidamente mientras se cumpla una condición.
CONTADOR=1 while [ $CONTADOR -le 5 ]; do echo "Iteración $CONTADOR" ((CONTADOR++)) done
Estos son solo algunos elementos básicos de la programación en el shell. La potencia de scripting en el shell radica en la capacidad de combinar estos conceptos para automatizar tareas y procesos en sistemas Unix/Linux.