Почему ${OPTARG} пустой

У меня есть код:

git_setup=false
postgresql_setup=false
java_setup=false
maven_setup=false
project_download=false
project_compile=false
project_run=false

while getopts fullInstall:gitSetup:psqlSetup:javaSetup:mavenSetup:projectDownload:projectCompile:projectRun: option
do
case "${option}"
in
f | -fullInstall) git_setup=true
postgresql_setup=true
java_setup=true
maven_setup=true
project_download=true
project_compile=true;;
g | -gitSetup) git_setup=$OPTARG;;
p | -psqlSetup) postgresql_setup=${OPTARG};;
j | -javaSetup) java_setup=${OPTARG};;
m | -mavenSetup) maven_setup=${OPTARG};;
d | -projectDownload) project_download=${OPTARG};;
c | -projectCompile) project_compile=${OPTARG};;
r | -projectRun) project_run=${OPTARG};;
esac
done

при запуске скрипта ./script.sh --gitSetup=true переменная git_setup просто становится пустой. Подскажите пожалуйста в чем проблема?


Ответы (2 шт):

Автор решения: Ainar-G

Утилита getopts стандарта POSIX не поддерживает длинные опции. Вы путаете её с GNU'шным getopt. Примеры работы обеих утилит уже есть в этом ответе

→ Ссылка
Автор решения: VincentVega

Помогла данная статья https://code-maven.com/bash-getopt-processing-command-line-arguments Финальное решение:

options=$(getopt --long fullInstall: --long gitSetup: --long psqlSetup: --long javaSetup: --long mavenSetup: --long projectDownload: --long projectCompile: --long projectRun: -- "$@")
    [ $? -eq 0 ] || {
        echo "Incorrect option provided"
        exit 1
    }
    eval set -- "$options"
    while true; do
        case "$1" in
        --fullInstall)
            shift;
            git_setup=$1
            postgresql_setup=$1
            java_setup=$1
            maven_setup=$1
            project_download=$1
            project_compile=$1
            ;;
        --gitSetup)
            shift;
            git_setup=$1
            echo $git_setup
            ;;
        --psqlSetup)
            shift;
            postgresql_setup=$1
            ;;
        --javaSetup)
            shift;
            java_setup=$1
            ;;
        --mavenSetup)
            shift;
            maven_setup=$1
            ;;
        --projectDownload)
            shift;
            project_download=$1
            ;;
        --projectCompile)
            shift;
            project_compile=$1
            ;;
        --projectRun)
            shift;
→ Ссылка