Fish Shell:
Lectura de argumentos de línea de comandos
Cómo:
Ejemplo sencillo:
for arg in $argv
echo "Argumento: $arg"
end
Si corres este script con fish mi_script.fish uno dos tres
, obtendrás:
Argumento: uno
Argumento: dos
Argumento: tres
Ejemplo con argumentos nombrados:
set -l usuario ""
set -l contraseña ""
for arg in $argv
switch $arg
case -u --usuario
set usuario $argv[(math (status current-command-index) + 1)]
case -p --contraseña
set contraseña $argv[(math (status current-command-index) + 1)]
case '*'
echo "Opción desconocida: $arg"
exit 1
end
end
echo "Usuario: $usuario"
echo "Contraseña: $contraseña"
Si corres este script con fish mi_script2.fish --usuario Ana --contraseña secreto
, obtendrás:
Usuario: Ana
Contraseña: secreto
Profundización:
Originalmente, leer argumentos de la línea de comandos era esencial para scripts en sistemas Unix, lo que permitía mayor versatilidad y reutilización.
En Fish, $argv
es una variable que contiene los argumentos de línea de comandos como una lista. Es distinto de Bash, donde los argumentos son $1
, $2
, etc.
Fish facilita iterar argumentos con un bucle for
simple. También tiene un switch
para manejar opciones complejas, algo parecido a getopts
en otros shells, pero más legible.
Otras alternativas para organizar argumentos incluyen argparse
, disponible en Fish, que es incluso más potente para scripts complicados.