Portál AbcLinuxu, 27. dubna 2024 00:41


Dotaz: getopts parsovani flagu

21.5.2012 16:37 loupak
getopts parsovani flagu
Přečteno: 199×
Odpovědět | Admin
Potreboval bych poradit ohledne parsovani argumentu pomoci getopts
Mam 4 argumenty pro skript, vsechny jsou nepovinne.
argumenty a a b jsou samostatne
b a c vyzaduji dalsi parametr
Ale bohuzel to nefunguje jak ma:

sysop@debi:~$ ./test.sh -ac

option a
c
Option -c requires an argument.
sysop@debi:~$ ./test.sh -ca
a
c argument a
sysop@debi:~$

Tady je test.sh
while getopts :abc:d: opt; do
echo $OPTARG
  case $opt in
    a)
      echo "option a"
    ;;
    b)
      echo "option b"
    ;;
    c)
      echo "c argument $OPTARG"
    ;;
    d)
      echo "d argument $OPTARG"
    ;;
    \?)
      echo "Neznamy aurgument"
      exit 1
    ;;
        :)
    echo "Option -$OPTARG requires an argument."
    exit 1
    ;;
  esac
done

Muze mi nekdo poradit jak na to ?
Nebo pouzit neco jineho ( tohle je jen ukazkovy priklad argumentu mam mnohem vice)
Diky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.5.2012 17:48 Kit
Rozbalit Rozbalit vše Re: getopts parsovani flagu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi je tam navíc ta první dvojtečka před "a". Raději ten parametr dávám do uvozovek, tedy "abc:d:".

Úplně na konci doporučuji
shift $(($OPTIND - 1))
A jako vždy: Všechny proměnné do uvozovek.
21.5.2012 21:04 loupak
Rozbalit Rozbalit vše Re: getopts parsovani flagu
Ta 1. dvojtecka je tam umyslne. Pak getops pracuje v silence modu.
Nechapu jak mi snizeni hodnoty indexu mohlo vypadnou...:)
Jeste je ale potreba to filtrovat na zakladne pomlcky pred argumentem a nasledne odecit index a pote preskocit soucasnou iteraci cyklu
Takze SOLVED, diky

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.