8

これは壊れています

alias f='git flow feature'
complete -F __git_flow_feature f

最終的に(2つの「タブ」の後)機能しますが、「タブ」を押すたびにエラーがスローされます。

-bash: [: 1: unary operator expected

何か案は?

4

4 に答える 4

2

私もこの問題を抱えていて、Google検索を行うたびにこの投稿に戻ってきました。

Michalの回答とDaenythのコメントを使用して見つけた解決策を投稿しています...

私の git-flow.bash は同一でしたが、git 補完ファイルは異なる可能性があると思います。

これを修正するには、次の場所にある git 補完ファイルを変更する必要がありました/etc/bash_completion.d/git

年:

# __git_find_on_cmdline requires 1 argument
__git_find_on_cmdline ()
{
local word subcommand c=1
while [ $c -lt $cword ]; do
    word="${words[c]}"
    for subcommand in $1; do
        if [ "$subcommand" = "$word" ]; then
            echo "$subcommand"
            return
        fi
    done
    c=$((++c))
done
}

新しい:

# __git_find_on_cmdline requires 1 argument
__git_find_on_cmdline ()
{
local word subcommand c=1
while [[ $c -lt $cword ]]; do
    word="${words[c]}"
    for subcommand in $1; do
        if [ "$subcommand" = "$word" ]; then
            echo "$subcommand"
            return
        fi
    done
    c=$((++c))
done
}

新しいコードに追加しなければならなかった二重括弧に注意してください。それが私が行った唯一の変更でした。

于 2013-01-22T00:05:37.900 に答える
2

git-flow-completionだけを使用しないのはなぜですか? bashの手順は次のとおりです。

$ cd /etc/bash_completion.d
$ sudo wget https://raw.githubusercontent.com/bobthecow/git-flow-completion/master/git-flow-completion.bash
$ exec $SHELL

zshまたはfishの説明もあります。

于 2014-04-25T10:44:40.137 に答える
2

私がするとき、それは私のために働きます:

  1. wget http://www.triquanta.nl/sites/default/files/git-flow.bash
  2. ソース git-flow.bash
  3. エイリアス f='git フロー機能'
  4. 完全な -F __git_flow_feature f
  5. tabtab

とにかく、 「[: 1: 単項演算子が必要です」というエラーの最も一般的な理由は、シェル スクリプト コードに次のようなものがあることです。

if [ 1 = $MYVAL ] 

あなたMYVALは設定されていません。補完関数を調べます。追加set -xしてデバッグできます。

通常、最も簡単な解決策は、変数をクォートして、オペレーターが空の引数を取得するようにすることですが、正しい数の引数を持つようにします。

if [ 1 = "$MYVAL" ] 
于 2012-01-17T15:42:02.687 に答える