Fish 别名传递多个参数,访问特定参数
Fish alias pass multiple arguments, access specific argument
我想在脚本中创建一个别名,用于使用 hub
创建 pull-requests
。
我正计划创建这样的函数。
# PR
function pr --description 'hub pr'
hub pull-request -b $argv[0] -m $argv[1];
end
-m
部分可以是可选的。
所以我可以这样pr 'branch here' 'message here'
但是我收到一条错误消息 Array index out of bounds
。
知道了。但是 -m
在这种情况下不是可选的。
# PR
function pr --description 'git pr' --argument-names message branch
hub pull-request -m $message -b $branch;
end
然后你可以输入pr 'message' 'branch'
function pr -d 'git pull-request' -a branch message
set -q message[1]
and set message -m $message
hub pull-request -b $branch $message
end
鱼数组从索引 1 开始,所以您的 $argv[0]
这里是错误的。使用 $argv[1]
代替那个,并使用 $argv[2]
代替您当前拥有的 $argv[1]
。
但是,目前除 1 之外的任何元素如果您尝试访问它并且未设置它,将导致数组索引越界错误,因此您需要检查它是否与 set -q argv[2]
.
# PR
function pr --description 'hub pr'
set -l message
if set -q argv[2]
set message -m $argv[2]
end
hub pull-request -b $argv[1] $message;
end
(此外,https://github.com/fish-shell/fish-shell/issues/826 讨论了删除索引越界错误)
还有另一种方法可以使用 test
方法结合 count
检查您的输入。这是一个检查大于 (gt
) 1 的示例。
if test (count $argv) -gt 1;
set r_args $argv[2..-1];
我想在脚本中创建一个别名,用于使用 hub
创建 pull-requests
。
我正计划创建这样的函数。
# PR
function pr --description 'hub pr'
hub pull-request -b $argv[0] -m $argv[1];
end
-m
部分可以是可选的。
所以我可以这样pr 'branch here' 'message here'
但是我收到一条错误消息 Array index out of bounds
。
知道了。但是 -m
在这种情况下不是可选的。
# PR
function pr --description 'git pr' --argument-names message branch
hub pull-request -m $message -b $branch;
end
然后你可以输入pr 'message' 'branch'
function pr -d 'git pull-request' -a branch message
set -q message[1]
and set message -m $message
hub pull-request -b $branch $message
end
鱼数组从索引 1 开始,所以您的 $argv[0]
这里是错误的。使用 $argv[1]
代替那个,并使用 $argv[2]
代替您当前拥有的 $argv[1]
。
但是,目前除 1 之外的任何元素如果您尝试访问它并且未设置它,将导致数组索引越界错误,因此您需要检查它是否与 set -q argv[2]
.
# PR
function pr --description 'hub pr'
set -l message
if set -q argv[2]
set message -m $argv[2]
end
hub pull-request -b $argv[1] $message;
end
(此外,https://github.com/fish-shell/fish-shell/issues/826 讨论了删除索引越界错误)
还有另一种方法可以使用 test
方法结合 count
检查您的输入。这是一个检查大于 (gt
) 1 的示例。
if test (count $argv) -gt 1;
set r_args $argv[2..-1];