BASO problema getopts

0

Alguém sabe por que não faz nada?

moznostm=
moznostl=
moznosta=
moznostb=
while getopts ":m:l:b:a:h:" OPTION
do
case $OPTION in
m)
moznostm=$OPTARG
echo "bol zadany argument $moznost"
;;
l)
moznostl=$OPTARG
echo bol zadany argument $OPTARG
;;
b)
moznostb=$OPTARG
echo bol zadany argument $OPTARG
;;
a)
moznosta=$OPTARG
echo bol zadany argument $OPTARG
;;
h)
echo prazny
;;
esac
done
    
por applenic 18.03.2015 / 15:38

2 respostas

0

Apenas algumas modificações.

1) Defina sua shebang! #!/bin/bash se você escrever bash

2) Redefinir se o getopts foi usado anteriormente

3) Você esqueceu um m at $moznost .

4) Não use maiúsculas para nomes de variáveis normais.

5) Use mais citações. Aspas duplas " " ao expandir variáveis.
6) Use shift .

7) Você não precisa definir / inicializar variáveis como está fazendo aqui moznostm= .

#!/bin/bash

OPTIND=1

    moznostm=
    moznostl=
    moznosta=
    moznostb=
    while getopts "mlbah:" opt
    do
    case "$opt" in
    m)
    moznostm=$OPTARG
    echo "bol zadany argument $moznostm"
    ;;
    l)
    moznostl=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    b)
    moznostb=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    a)
    moznosta=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    h)
    echo "prazny"
    ;;
    esac
    done
shift "$((OPTIND-1))"

Execute o script:

chmod +x scriptname && ./scripname -m
    
por 18.03.2015 / 15:59
1

Você precisa chamar seu script com uma opção e um argumento de opção. Por exemplo:

bash yourscript -l argumentfor_l

Note também que moznost é impresso mas nunca definido.

    
por 18.03.2015 / 15:51

Tags