2017-06-15 58 views
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

回答

5
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 
+0

注意'message [1]'在这里。目前'-a'的工作方式是变量总是被定义的,所以你需要检查它是否包含任何东西。 – faho

0

明白了。但在这种情况下,-m不是可选的。

# PR 
function pr --description 'git pr' --argument-names message branch 
     hub pull-request -m $message -b $branch; 
end 

然后你就可以键入pr 'message' 'branch'

+0

现在'-m'是如何选择的? –

+0

我想这不是。这是我想出来的,我不接受这个答案。正如我记得'-m'可以是可选的,不一定是。 – iamdevlinph

1

鱼阵列开始索引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讨论删除索引出界外的错误)

1

还有另一种方法结合使用的testcount检查您输入。这里是一个检查大于(gt)的示例1.

if test (count $argv) -gt 1; 
    set r_args $argv[2..-1];