> 
> Each long option name in longopts may be followed by one colon to indicate it has a required argument, and by two colons to indicate it has an optional argument.
> 
> 
> 

in `man bash`.

I wrote a bash function `optionarg`:

```
optionarg (){
    opts=$(getopt -o , --long name:,pass:: -- "$@")
    eval set -- "$opts"
    while true; do
        case "$1" in
            --name)
                name=$2
                echo  "name is " $name
                shift 2;;
            --pass)
                case "$2" in 
                    '')
                        echo "no pass argument"
                        shift 2;; 
                    *)
                        pass=$2
                        echo  "pass" $pass
                        shift 2;;
                esac;;               
            --)
                shift 1;;
            *)  break;;
        esac
    done }

```

Let test my optionarg here.  

1.Assign no argument with `pass`. 

```
optionarg --name tom --pass
name is  tom
no pass argument

```

2.Assign an argument `xxxx` with `pass`. 

```
optionarg --name tom --pass xxxx
name is  tom
no pass argument

```

How to fix my `optionarg` function to get such output?

```
optionarg --name tom --pass xxxx
name is  tom
pass xxxx

```