getopts(1p)
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.