fish - prueba - Cómo acceder a los argumentos restantes en un script de pescado
fish prueba (3)
my-fish-script a b c d
Digamos que desea obtener todos los argumentos desde el segundo argumento en adelante, así que bcd
.
En bash puede usar shift
para volcar el primer argumento y acceder a los restantes con "$@"
.
¿Cómo resolverías el problema usando la cáscara de pescado?
El comportamiento del comando de shift
se puede simular con set -e/--erase VARIABLE_NAME
.
La idea es borrar el primer argumento, luego obtener los argumentos restantes de la lista $argv
.
Por ejemplo
function loop --description "loop <count> <command>"
set count $argv[1]
set --erase argv[1]
for i in (seq 1 $count)
eval $argv
end
end
Uso
$ loop 3 echo hello world
hello world
hello world
hello world
En fish, tus argumentos están contenidos en la lista $argv
. Utilice la división de listas para acceder a un rango de elementos, por ejemplo, $argv[2..-1]
devuelve todos los argumentos desde el segundo hasta el último.
Por ejemplo
function loop --description "loop <count> <command>"
for i in (seq 1 $argv[1])
eval $argv[2..-1]
end
end
Uso
$ loop 3 echo hello world
hello world
hello world
hello world
También podría usar la lectura que es más legible en mi opinión:
function loop
echo $argv | read -l count command
for i in (seq 1 $count)
eval $command
end
end
Esto funciona mejor, especialmente cuando desea utilizar más que el primer argumento.
echo $argv | read -l first second rest