Fish别名传递多个参数,访问特定参数

时间:2017-06-15 04:39:38

标签: fish

我想在脚本中创建一个别名,用于使用pull-requests创建hub

我打算创建这样的功能。

# 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

4 个答案:

答案 0 :(得分:6)

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 :(得分:2)

Fish数组从索引1开始,因此您的$argv[0]错误。使用$argv[1]代替,$argv[2]代替您目前拥有的$argv[1]

但是,当前除1之外的任何元素都会导致数组索引越界错误,如果您尝试访问它并且它没有设置,那么您需要检查它是否与{{{ 1}}。

set -q argv[2]

(另外,https://github.com/fish-shell/fish-shell/issues/826讨论了删除索引越界错误)

答案 2 :(得分:1)

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

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

然后您可以输入pr 'message' 'branch'

答案 3 :(得分:1)

还有另一种方法可以使用test方法结合count来检查输入。以下是检查大于(gt)1的示例。

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