Question: This is breaking 

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

```

It works eventually (after 2 'tabs') but throws an error on each 'tab' press. 

```
-bash: [: 1: unary operator expected

```

Any ideas?

Answer: 
It works for me, when I do:

1. wget <http://www.triquanta.nl/sites/default/files/git-flow.bash>
2. source git-flow.bash
3. alias f='git flow feature'
4. complete -F \_\_git\_flow\_feature f
5. f `tab``tab`

Anyhow, the most common reason for the *"[: 1: unary operator expected"* error is that you have in the shell script code like:

```
if [ 1 = $MYVAL ] 

```

and your `MYVAL` is not set. Inspect your completion functions. You can add `set -x` to debug it.

Usually the easiest solution is to quote the variable so the operator will get the empty argument, but will have correct number of arguments:

```
if [ 1 = "$MYVAL" ] 

```
I had this problem too and every Google search lead me back to this post.

I am posting the solution I found using Michal's answer and Daenyth's comment...

My git-flow.bash was identical, but I think our git completion files might be varying.

To fix this I had to modify my git completion file located at `/etc/bash_completion.d/git`

Old:

```
# __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
}

```

New:

```
# __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
}

```

Notice the double bracket I had to add to the new code. That was the only change I made.