Como ter a funcionalidade getopts quando apenas chamar outra função dentro do arquivo

1

Gostaria de ter parâmetros nomeados para minhas funções.

Parece que só consigo usar GETOPTS para a função principal chamada a partir da linha de comando.

Se eu tiver várias funções dentro de um arquivo, existe alguma maneira de obter o mesmo tipo de funcionalidade (parâmetros nomeados) ao chamar outras funções?

por exemplo. o seguinte não parece funcionar:

$ cat getops_example.sh 
function usage {
  echo 'here'
}

function my_test {
while getopts ":s:p:" o; do
    case "${o}" in
        s)
            s=${OPTARG}
            ((s == 45 || s == 90)) || usage
            ;;
        p)
            p=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done
}
my_test 11 20
echo "s was $s"
echo "p was $p"
$

$ ./getops_example.sh -s 10 -p 20
s was 
p was 
    
por Michael Durrant 09.03.2015 / 21:18

1 resposta

2

Seu programa não funciona porque você passa parâmetros para o seu programa, mas dentro do programa você chama sua função my_test sem a opção flags -s e -p resp. Dependendo do que você realmente quer, use

my_test -s 11 -p 20

ou passe os argumentos de fora e chame sua função como

my_test "$@"
    
por 09.03.2015 / 21:33

Tags