I have problem with getopts. When i write ./nameofscript.sh -n name - it should make a new repository but it says to me : -- n is unknown option and in new line: Adding user with name: blank.
Why does it happen ?
    #!/bin/bash
    #what2do=${0##*/}
    #what2do=${what2do%.sh}
    what2do="addProject"
    what2do="addRepository"
    what2do="addUser"
    doAddRepository ()  {
     local repoName="$1"
    echo "Adding repo with name: $repoName"
     # Adding new repository with the name $repoName...
    }
    doAddProject ()  {
     local projName="$1"
    echo "Adding project with name: $projName"
     # Adding new project with the name $projName...
    }
    doAddUser ()  {
     local userName="$1"
    echo "Adding user with name: $userName"
     # Some code to add user "$userName"...
    }
case $what2do in
addRepository)
      while getopts 'n:' key; do
        case $key in
          n) REPO_NAME=$OPTARG ;;
        esac
      done
      doAddRepository "$REPO_NAME"
      exit $?
    ;;
addProject)
      while getopts 'm:' key; do
        case $key in
          m) PROJ_NAME=$OPTARG ;;
        esac
      done
      doAddProject "$PROJ_NAME"
      exit $?
    ;;
addUser)
      while getopts 'u:' key; do
        case $key in
          u) USER_NAME=$OPTARG ;;
        esac
      done
      doAddUser "$USER_NAME"
      exit $?
    ;;
    *)
      echo "I don't know how to $what2do. Maybe, it is NIY" >&2
    #  doShowUsage
      exit 1
    ;;
esac
 
    