如何访问fish脚本中的剩余参数

时间:2014-06-07 04:27:55

标签: fish

my-fish-script a b c d

假设您希望从第二个参数开始获取所有参数,那么b c d

在bash中,您可以使用shift转储第一个参数,并使用"$@"访问其余参数。

如何使用鱼壳解决问题?

3 个答案:

答案 0 :(得分:46)

在fish中,您的参数包含在$argv列表中。使用列表切片来访问一系列元素,例如$argv[2..-1]返回从第二个到最后一个的所有参数。

例如

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

用法

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

答案 1 :(得分:20)

可以使用shift模拟set -e/--erase VARIABLE_NAME命令的行为。

想法是删除第一个参数,然后从$argv列表中获取剩余的参数。

例如

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

用法

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

答案 2 :(得分:10)

你也可以使用我认为更具可读性的阅读:

function loop
  echo $argv | read -l count command
  for i in (seq 1 $count)
    eval $command
  end
end

这更好用,特别是当你想使用多于第一个参数时。

echo $argv | read -l first second rest