How to access remaining arguments in a fish script

Dennis picture Dennis · Jun 7, 2014 · Viewed 18.7k times · Source
my-fish-script a b c d

Say you want to get the all arguments from the second argument onwards, so b c d.

In bash you can use shift to dump the first argument and access the remaining ones with "$@".

How would you solve the problem using the fish shell?

Answer

Dennis picture Dennis · Jun 7, 2014

In fish, your arguments are contained in the $argv list. Use list slicing to access a range of elements, e.g. $argv[2..-1] returns all arguments from the second to the last.

For example

function loop --description "loop <count> <command>"
  for i in (seq 1 $argv[1])
    eval $argv[2..-1]
  end
end

Usage

$ loop 3 echo hello world
hello world
hello world
hello world