traduccion prueba marillion libro juego information genetica food fish

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