getopts(1p): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (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
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.