Diferencias entre $@, $* y $# en Bash
Al trabajar con scripts de Bash, es común encontrarse con variables especiales como $@
, $*
y $#
, que se utilizan para manipular argumentos de línea de comandos. Aunque pueden parecer similares, tienen diferencias importantes en su comportamiento y uso. En este artículo, exploraremos estas diferencias y cómo se utilizan en la práctica.
$@
La variable $@
representa todos los argumentos pasados al script. Cada argumento se trata como una cadena separada, lo que significa que se mantiene la separación entre comillas. Esto es útil cuando se desea mantener los argumentos como palabras separadas.
Por ejemplo:
#!/bin/bash
for arg in "$@"; do
echo "$arg"
done
Al ejecutar el script con ./script.sh arg1 "arg 2" arg3
, $@
contendrá tres elementos: arg1
, arg 2
y arg3
.
$*
Similar a $@
, la variable $*
también representa todos los argumentos pasados al script. Sin embargo, a diferencia de $@
, $*
trata todos los argumentos como una única cadena, sin mantener la separación entre comillas.
Por ejemplo:
#!/bin/bash
for arg in "$*"; do
echo "$arg"
done
Al ejecutar el mismo script con ./script.sh arg1 "arg 2" arg3
, $*
contendrá una única cadena: arg1 arg 2 arg3
.
$
La variable $#
representa el número total de argumentos pasados al script. Es útil para determinar la cantidad de argumentos que se han pasado.
Por ejemplo:
#!/bin/bash
echo "Número de argumentos: $#"
Al ejecutar el script con ./script.sh arg1 "arg 2" arg3
, $#
contendrá el valor 3
.
Resumen
$@
: Representa todos los argumentos como palabras separadas, manteniendo la separación entre comillas.$*
: Representa todos los argumentos como una única cadena, sin mantener la separación entre comillas.$#
: Representa el número total de argumentos pasados al script.
En resumen, $@
, $*
y $#
son variables importantes en Bash que permiten acceder y manipular los argumentos pasados a un script. La elección entre $@
y $*
depende de si se desea mantener la separación entre comillas o no, mientras que $#
proporciona el número total de argumentos para su procesamiento.
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.