Search code examples
fish

How to access remaining arguments in a fish script


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?


Solution

  • 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