2017-06-15 18 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 

そして、あなたはあなたの$argv[0]がここに間違っているようpr 'message' 'branch'

+0

'-m'はどのようにオプションになりましたか? –

+0

私はそれがないと思います。これは私が思いついたもので、私はこれを答えとして受け入れなかった。そして、私は '-m'はオプションであることを覚えているので、そうである必要はありません。 – iamdevlinph

1

魚アレイは、インデックス1から始まり入力することができます。代わりに$argv[1]を使用してください。$argv[1]の代わりに$argv[2]を使用してください。

ただし、現在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

countとの組み合わせでtest方法を使用して、あなたの入力をチェックする別の方法があります。以下は、(gt)より大きいかどうかをチェックする例です。

if test (count $argv) -gt 1; 
    set r_args $argv[2..-1]; 
関連する問題