como fazer o getopts apenas leia o primeiro caractere post '-' [closed]

3

Eu tenho um script de shell testShell.sh que usa getopts conforme abaixo:

#!/bin/bash
while getopts ":j:e:" option; do
    case "$option" in
        j) MYHOSTNAME=$OPTARG ;;
        e) SCRIPT_PATH=$OPTARG ;;
        *) ;;
    esac
done

echo "j=$MYHOSTNAME"
echo "e=$SCRIPT_PATH"
shift $((OPTIND - 1))
echo "remaining=$@"

Quando executo o teste, gosto de seguir:

$ testShell.sh  -jvalue1 -evalue4 -Djvalue3  -pvalue2

A saída que recebo é a seguinte:

j=value3
e=2
remaining=

Mas gostaria da saída como:

j=value1
e=value4
remaining=-Djvalue3 -pvalue2

É possível garantir que getopts apenas analise o primeiro caractere post - símbolo? para que ele não seja exibido t interpretar -Djvalue3 como -jvalue3 e -pvalue2 como -e2 .

    
por SiB 01.08.2012 / 10:46

1 resposta

1

Depois de postar em 3 fóruns e pesquisar em todos os lugares ... finalmente tentei o seguinte e funcionou ...

testShell.sh  -jvalue1 -evalue4 -- -Djvalue3  -pvalue2

Aviso

--  

depois de -evalue4

E a saída foi

j=value1
e=value4
remaining=-Djvalue3 -pvalue2

Acredito que -- pede getopts para interromper as opções de processamento.

    
por 01.08.2012 / 12:10

Tags