my-fish-script a b c d
假设您想从第二个参数开始获取所有参数,所以b c d
.
在 bash 中,您可以使用shift
转储第一个参数并使用"$@"
.
您将如何使用鱼壳解决问题?
my-fish-script a b c d
假设您想从第二个参数开始获取所有参数,所以b c d
.
在 bash 中,您可以使用shift
转储第一个参数并使用"$@"
.
您将如何使用鱼壳解决问题?
在鱼中,您的论点包含在$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
命令的行为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
您还可以使用 read 在我看来更具可读性:
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