my-fish-script a b c d
假设您希望从第二个参数开始获取所有参数,那么b c d
。
在bash中,您可以使用shift
转储第一个参数,并使用"$@"
访问其余参数。
如何使用鱼壳解决问题?
答案 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