getopts(1p): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med '== NAMN == getopts - tolka kommandoradsflaggor == SYNOPS == getopts ''optstrang variabel'' [argument...] == BESKRIVNING == Kommandot <code>getopts</code> tolkar flaggor och flaggargument enligt POSIX:s rekommenderade syntaxregler (riktlinjer 3 till 10 i avsnitt 12.2). Det uppdaterar skalvariablerna <code>OPTIND</code> (aktuellt argumentindex) och <code>OPTARG</code> (flaggar med argument). Resultatet av den tolkade flaggan returneras i användardefinierad variabel ''va...')
(Ingen skillnad)

Versionen från 7 april 2025 kl. 06.39

NAMN

getopts - tolka kommandoradsflaggor

SYNOPS

getopts optstrang variabel [argument...]

BESKRIVNING

Kommandot getopts tolkar flaggor och flaggargument enligt POSIX:s rekommenderade syntaxregler (riktlinjer 3 till 10 i avsnitt 12.2). Det uppdaterar skalvariablerna OPTIND (aktuellt argumentindex) och OPTARG (flaggar med argument). Resultatet av den tolkade flaggan returneras i användardefinierad variabel variabel.

Vid varje anrop hämtar getopts nästa flagga från argumentlistan. När en flagga kräver ett argument placeras det i OPTARG. Om en okänd flagga hittas sätts variabeln till ?. Om optstrang börjar med : hanteras flaggfel tyst, och OPTARG innehåller den felaktiga flaggan.

När getopts inte hittar fler flaggor returnerar det ett värde >0 och sätter OPTIND till indexet för första icke-flagga.

OPTIND initieras till 1 varje gång ett skal startas. För att återanvända getopts på en ny parameterlista kan man själv sätta OPTIND=1.

FLAGGOR

Inga.

OPERANDER

optstrang:

 En sträng med flaggtecken. Tecken följda av : kräver argument. Det första tecknet styr hantering av fel (tyst eller med felmeddelande). ? och : får inte användas som flaggtecken.

variabel:

 Namn på skalvariabel där aktuell flagga sparas.

Om ytterligare argument anges till getopts används dessa i stället för de positionella parametrarna.

STDIN

Används inte.

INMATNINGSFILER

Inga.

MILJÖVARIABLER

LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, NLSPATH: Påverkar lokalanpassning (t.ex. felmeddelanden).

OPTIND: Index för nästa argument som ska bearbetas. Kan justeras manuellt.

ASYNKRONA HÄNDELSER

Standardbeteende.

STDOUT

Används inte.

STDERR

Felmeddelanden skrivs till standardfel om optstrang inte inleds med :. Dessa inkluderar:

  • Programnamn (motsvarar $0)
  • Felaktigt flaggtecken
  • Avsaknad av förväntat argument

UTGÅNGSFILER

Inga.

UTFÖRLIG BESKRIVNING

Ingen ytterligare information.

AVSLUTNINGSSTATUS

0 om en flagga hittats (giltig eller ogiltig). Annars >0 vid slut på flaggor eller fel.

KONSEKVENSER VID FEL

Standard. Fel i flaggsyntax är inte fel i getopts utan i hur anropet formulerats.

ANVÄNDNING

Eftersom getopts påverkar skalets miljö är det normalt en inbyggd funktion. Anrop i subsheller (t.ex. (getopts ...)) har ingen effekt utanför.

Shellfunktioner delar OPTIND med det yttre skalet. Om båda använder getopts kan resultatet bli oförutsägbart.

EXEMPEL

aflag=
bflag=
while getopts ab: name
do
    case $name in
    a)  aflag=1;;
    b)  bflag=1
        bval="$OPTARG";;
    ?)  printf "Usage: %s: [-a] [-b value] args\n" "$0"
        exit 2;;
    esac
done

if [ -n "$aflag" ]; then
    echo "Flagga -a angavs"
fi
if [ -n "$bflag" ]; then
    echo "Flagga -b med värde '$bval' angavs"
fi
shift $((OPTIND - 1))
echo "Återstående argument: $*"

MOTIVERING

getopts valdes istället för getopt eftersom det hanterar argument med blanksteg. Variabeln OPTARG är utåt endast (output-only) och påverkar inte exekvering.

: som första tecken i optstrang inaktiverar felmeddelanden och motsvarar tidigare OPTERR-logik.

FRAMTIDA ÄNDRINGAR

Inga planerade.

SE ÄVEN

getopt(1p) getopt(3p) pax(1p)

COPYRIGHT

Texten är baserad på IEEE Std 1003.1-2017 och återges med tillåtelse. Eventuella fel härleds till konverteringsprocessen. För ursprunglig version, se: http://www.opengroup.org/unix/online.html

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/getopts.1p.html


Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.