鱼别名传递多个参数,访问特定参数
我想在脚本中创建一个别名,用于使用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
。
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
明白了。但在这种情况下,-m
不是可选的。
# PR
function pr --description 'git pr' --argument-names message branch
hub pull-request -m $message -b $branch;
end
然后你就可以键入pr 'message' 'branch'
现在'-m'是如何选择的? –
我想这不是。这是我想出来的,我不接受这个答案。正如我记得'-m'可以是可选的,不一定是。 – iamdevlinph
鱼阵列开始索引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];
注意'message [1]'在这里。目前'-a'的工作方式是变量总是被定义的,所以你需要检查它是否包含任何东西。 – faho