Argumentos y opciones de scripts ($@, $#, getopts)
Aprenda a pasar argumentos a sus scripts y analizar opciones de la línea de comandos mediante variables especiales y «getopts».
Argumentos y opciones de scripts ($@, $#, getopts) es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.
Argumentos de scripts: ¿por qué usarlos?
¿Ha usado alguna vez un comando como ls -l o cp file1 file2? ¡-l, file1 y file2 son argumentos! Indican al comando qué debe hacer o sobre qué debe actuar.
En los scripts de Bash, los argumentos hacen que sus scripts sean flexibles. En lugar de codificar valores directamente, el script puede aceptar entradas desde la línea de comandos al ejecutarse.
Acceder a los argumentos posicionales
Cuando ejecuta un script con argumentos, Bash los asigna automáticamente a unas variables especiales llamadas parámetros posicionales.
- El primer argumento es
$1. - El segundo argumento es
$2. - Y así sucesivamente, hasta
$9.
Para los argumentos posteriores al noveno, debe usar llaves, como en ${10}, ${11}, etc. Estas variables contienen los valores que se pasan al script.
Demostración: argumentos posicionales
Veamos cómo acceder a estos argumentos en un script. Guarde el archivo como greet.sh y ejecútelo con ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"<code>$0</code> y <code>$#</code>: información del script
Bash proporciona algunas variables especiales más que ofrecen información sobre el propio script y sus argumentos:
$0: contiene el nombre del script que se está ejecutando. Es útil para los mensajes de error o el registro.$#: contiene el número total de argumentos posicionales que se han pasado al script.
Estas variables ayudan a que sus scripts sean más robustos y fáciles de usar.
Demostración: <code>$0</code> y <code>$#</code>
Ejecute este script con diferentes cantidades de argumentos, por ejemplo, ./info.sh one two three o simplemente ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"<code>$@</code> frente a <code>$*</code>: todos los argumentos
A veces necesita hacer referencia a todos los argumentos a la vez. Bash ofrece dos formas:
$@: se expande a argumentos independientes. Cuando se escribe entre comillas dobles ("$@"), cada argumento sigue siendo una palabra distinta, aunque contenga espacios. Esta suele ser la opción preferida para los bucles.$*: se expande a una única cadena con todos los argumentos. Cuando se escribe entre comillas dobles ("$*"), todos los argumentos se combinan en una sola palabra, separados por el primer carácter deIFS(separador interno de campos, normalmente un espacio).
¡Use siempre "$@" al iterar sobre argumentos para conservar los espacios!
Demostración: recorrer con <code>"$@"</code>
Este script muestra cómo "$@" gestiona correctamente los argumentos que contienen espacios. Ejecútelo así: ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneOpciones: más allá de los argumentos posicionales
Los argumentos posicionales son excelentes para casos sencillos, pero ¿qué ocurre si su script necesita opciones o parámetros con nombre opcionales, como -v para el modo detallado o -f filename?
Aquí entran en juego las opciones de la línea de comandos. Hacen que los scripts sean más flexibles y fáciles de usar, ya que permiten especificar la configuración en cualquier orden.
Bash proporciona el comando getopts específicamente para analizar este tipo de opciones.
Sintaxis de <code>getopts</code>: <code>optstring</code>
La sintaxis básica de getopts es: getopts optstring variable.
optstring: una cadena de caracteres de opción válidos. Si una opción requiere un argumento, como-f filename, añada dos puntos después del carácter (por ejemplo,f:).variable: un nombre de variable en el quegetoptsalmacenará el carácter de la opción que se esté procesando (por ejemplo,opt).
getopts también establece OPTARG para los argumentos de las opciones y OPTIND para el índice del argumento siguiente.
Demostración: <code>getopts</code> básico
Este script procesa las opciones -v (modo detallado) y -f (archivo). Pruebe a ejecutarlo: ./options.sh -v -f mydata.txt -x o ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneComprobación rápida: variables de argumentos
Considere el siguiente script y la forma en que se ejecuta:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneSi ejecuta: ./myscript.sh "Hello World" 123
¿Cuál sería la salida?
Repaso: argumentos y opciones
¡Excelente trabajo! Ha aprendido a hacer que sus scripts de Bash sean mucho más versátiles:
- Argumentos posicionales: use
$1,$2, etc., para acceder directamente a los argumentos. - Variables especiales:
$0para el nombre del script,$#para el número de argumentos y"$@"para iterar de forma segura sobre todos los argumentos. - Opciones de la línea de comandos: use
getoptspara analizar opciones con nombre, como-v, y sus argumentos, como-f filename, haciendo que sus scripts sean más robustos y fáciles de usar.
¡Practique el uso de estos elementos en sus propios scripts para crear herramientas potentes y flexibles de línea de comandos!
Preguntas frecuentes
¿La lección «Argumentos y opciones de scripts ($@, $#, getopts)» es gratis?
Sí — el texto completo de «Argumentos y opciones de scripts ($@, $#, getopts)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Argumentos y opciones de scripts ($@, $#, getopts)»?
Aprenda a pasar argumentos a sus scripts y analizar opciones de la línea de comandos mediante variables especiales y «getopts». Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Argumentos y opciones de scripts ($@, $#, getopts)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estructuras de bucle (for, while)
- Funciones en scripts de Bash
- Argumentos y opciones de scripts ($@, $#, getopts)
- La sentencia case y la coincidencia de patrones