Cuando escribimos scripts en Bash, muchas veces necesitamos pasarle argumentos desde la línea de comandos. Estos parámetros permiten que un mismo script se comporte de forma diferente según lo que necesitemos.
Argumentos básicos: $1
, $2
, $3
…
En Bash, cada argumento se representa con una variable especial:
$0
→ el nombre del script.$1
→ el primer argumento.$2
→ el segundo argumento.$@
→ todos los argumentos como lista.$#
→ el número de argumentos recibidos.
Ejemplo sencillo (bash-arguments.sh
):
#!/bin/bash
ARG_1=$1
ARG_2=$2
echo "Valor del argumento 1: $ARG_1"
echo "Valor del argumento 2: $ARG_2"
Ejecutamos:
bash-arguments.sh valor1 valor2
Salida:
Valor del argumento 1: valor1
Valor del argumento 2: valor2
Saber cuántos argumentos llegaron
Podemos comprobar si se pasaron los parámetros esperados:
#!/bin/bash
echo "Número de argumentos: $#"
echo "Todos los argumentos: $@"
Ejemplo:
bash script.sh uno dos tres
Salida:
Número de argumentos: 3
Todos los argumentos: uno dos tres
Uso de shift
: recorrer argumentos
A veces no sabemos cuántos parámetros habrá. Con shift
, podemos procesarlos uno por uno:
#!/bin/bash
while [[ $# -gt 0 ]]; do
echo "Procesando argumento: $1"
shift
done
Argumentos con nombre (flags)
Para scripts más elaborados, es habitual usar flags como -f
o --file
. Un ejemplo simple:
#!/bin/bash
while [[ $# -gt 0 ]]; do
case $1 in
-f|--file)
FILE="$2"
shift 2
;;
-v|--verbose)
VERBOSE=1
shift
;;
*)
echo "Opción desconocida: $1"
exit 1
;;
esac
done
echo "Archivo: $FILE"
echo "Verbose: $VERBOSE"
Ejemplo de uso:
bash script.sh --file datos.txt --verbose
Conclusión
$1
,$2
,$@
,$#
son las variables básicas para leer parámetros en Bash.- Con
shift
puedes recorrer argumentos de forma dinámica. - Para scripts más avanzados, usa estructuras
case
para interpretar opciones con nombre.
De esta forma, tu script será mucho más flexible y fácil de mantener.