3. Paso de argumentos y aceptar entradas de usuario en tus scripts
Introducción
Para hacer tus scripts de Bash más flexibles e interactivos, es fundamental saber cómo pasar argumentos al script y cómo aceptar entradas del usuario durante la ejecución. En este capítulo, aprenderás ambas técnicas.
Paso de argumentos
Los argumentos son valores que puedes pasar a tu script cuando lo ejecutas desde la línea de comandos.
Acceder a los argumentos
Bash proporciona variables especiales para acceder a los argumentos:
$0
: Nombre del script$1
,$2
,$3
, etc.: Primer argumento, segundo argumento, tercer argumento, etc.$#
: Número total de argumentos$@
: Todos los argumentos como palabras separadas$*
: Todos los argumentos como una sola palabra
Ejemplo de script con argumentos
#!/bin/bash
echo "Nombre del script: $0"
echo "Primer argumento: $1"
echo "Segundo argumento: $2"
echo "Número total de argumentos: $#"
echo "Todos los argumentos: $@"
Para ejecutar este script:
./mi_script.sh hola mundo
Salida:
Nombre del script: ./mi_script.sh
Primer argumento: hola
Segundo argumento: mundo
Número total de argumentos: 2
Todos los argumentos: hola mundo
Aceptar entradas de usuario
Para hacer tus scripts interactivos, puedes solicitar información al usuario durante la ejecución.
Comando read
El comando read
se usa para capturar la entrada del usuario:
read variable
Ejemplo de script interactivo
#!/bin/bash
echo "¿Cómo te llamas?"
read nombre
echo "¿Cuántos años tienes?"
read edad
echo "Hola, $nombre. Tienes $edad años."
Opciones útiles de read
-p
: Muestra un prompt-s
: Modo silencioso (útil para contraseñas)-t
: Establece un tiempo límite
Ejemplo:
#!/bin/bash
read -p "Ingresa tu nombre: " nombre
read -sp "Ingresa tu contraseña: " password
echo # Salto de línea después de la contraseña
echo "Hola, $nombre. Tu contraseña tiene ${#password} caracteres."
Combinando argumentos y entradas de usuario
Puedes combinar ambas técnicas para crear scripts más versátiles:
#!/bin/bash
if [ $# -eq 0 ]; then
read -p "Ingresa tu nombre: " nombre
else
nombre=$1
fi
echo "Hola, $nombre. Bienvenido a nuestro script interactivo."
read -p "¿Qué edad tienes? " edad
echo "$nombre tiene $edad años."
Validación de entradas
Es importante validar las entradas del usuario para evitar errores:
#!/bin/bash
read -p "Ingresa tu edad: " edad
if [[ ! $edad =~ ^[0-9]+$ ]]; then
echo "Error: Debes ingresar un número."
exit 1
fi
if [ $edad -lt 0 ] || [ $edad -gt 120 ]; then
echo "Error: La edad debe estar entre 0 y 120."
exit 1
fi
echo "Tu edad es $edad años."
Ejercicios
- Crea un script que acepte dos números como argumentos y muestre su suma.
- Escribe un script que pida al usuario su nombre y apellido, y luego los muestre en orden inverso.
- Desarrolla un script que acepte un argumento (nombre de archivo) y pregunte al usuario si quiere ver el contenido del archivo o eliminarlo.
Conclusión
Dominar el paso de argumentos y la aceptación de entradas de usuario te permitirá crear scripts de Bash más flexibles e interactivos. Estas técnicas son fundamentales para desarrollar herramientas de línea de comandos útiles y versátiles. Practica con los ejercicios propuestos para mejorar tus habilidades.