getopts(1p): Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| Rad 1: | Rad 1: | ||
= getopts(1p) = | |||
== NAMN == | == NAMN == | ||
getopts | <pre> | ||
getopts — tolka flaggor till kommandoradsverktyg | |||
</pre> | |||
== | == SYNOPSIS == | ||
getopts | <pre> | ||
getopts optstr namn [argument ...] | |||
</pre> | |||
== BESKRIVNING == | == BESKRIVNING == | ||
Kommandot < | <pre> | ||
Kommandot <i>getopts</i> läser in flaggor och flaggargument från en lista med parametrar. Det följer riktlinjerna 3 till 10 i POSIX.1‐2017, avsnitt 12.2, "Utility Syntax Guidelines". | |||
Vid varje anrop sparas nästa flagga i skalvariabeln som anges av operanden <i>namn</i>, och indexet för nästa argument i variabeln <i>OPTIND</i>. När skalet startas sätts <i>OPTIND</i> till 1. | |||
Om flaggan kräver ett argument, placeras detta i skalvariabeln <i>OPTARG</i>. Om ingen flagga hittas, eller om flaggan inte har ett argument, kommer <i>OPTARG</i> inte att vara satt. | |||
Om ett tecken som inte ingår i <i>optsträng</i> hittas där en flagga förväntas, sätts <i>namn</i>-variabeln till frågetecknet <b>'?'</b>. Om första tecknet i <i>optsträng</i> är kolon <b>':'</b>, sätts <i>OPTARG</i> till det funna tecknet, annars skrivs ett felmeddelande till standard error och <i>OPTARG</i> sätts inte. | |||
Om ett flaggargument saknas: | |||
* Om <i>optsträng</i> börjar med kolon (<b>':'</b>), sätts <i>namn</i> till kolon och <i>OPTARG</i> till den funna flaggan. | |||
* Annars sätts <i>namn</i> till frågetecken, <i>OPTARG</i> avsätts och ett felmeddelande skrivs till standardfel. | |||
När | När flaggorna är slut returnerar kommandot ett värde större än noll. <i>OPTIND</i> sätts till index för första operanden eller <b>"$#"</b>+1 om inga operander finns. <i>namn</i>-variabeln sätts till frågetecken. | ||
< | Variablerna <i>OPTIND</i> och <i>OPTARG</i> påverkar det aktuella skalets miljö och exporteras inte som standard. Om <i>OPTIND</i> sätts till 1, kan nya argument användas. | ||
</pre> | |||
== FLAGGOR == | == FLAGGOR == | ||
<pre> | |||
Inga. | Inga. | ||
</pre> | |||
== OPERANDER == | == OPERANDER == | ||
<pre> | |||
En sträng | Följande operander stöds: | ||
optsträng | |||
En sträng som innehåller flaggtecken. Om ett tecken följs av kolon (':'), krävs ett argument. Tecken som '?' och ':' ska inte användas. Tecken som inte är alfanumeriska kan ge oförutsägbara resultat. | |||
namn | |||
Namnet på en skalvariabel som sätts till den flagga som hittades. | |||
Om | Om argument anges till <i>getopts</i> kommer dessa att tolkas istället för skalets positionella parametrar. | ||
</pre> | |||
== STDIN == | == STDIN == | ||
Används | <pre> | ||
Används ej. | |||
</pre> | |||
== | == INDATAFILAR == | ||
<pre> | |||
Inga. | Inga. | ||
</pre> | |||
== MILJÖVARIABLER == | == MILJÖVARIABLER == | ||
< | <pre> | ||
Följande miljövariabler påverkar körningen: | |||
LANG Standardvärde för andra internationaliseringsvariabler. | |||
LC_ALL Överskrider alla andra locale-inställningar. | |||
LC_CTYPE Påverkar tolkning av text (t.ex. multibyte-tecken). | |||
LC_MESSAGES Format och innehåll i felmeddelanden. | |||
NLSPATH Plats för meddelandekataloger. | |||
OPTIND Används av getopts som index för nästa argument. | |||
</pre> | |||
== ASYNKRONA HÄNDELSER == | == ASYNKRONA HÄNDELSER == | ||
<pre> | |||
Standard. | |||
</pre> | |||
== STDOUT == | == STDOUT == | ||
Används | <pre> | ||
Används ej. | |||
</pre> | |||
== STDERR == | == STDERR == | ||
<pre> | |||
* | Om <i>optsträng</i> inte börjar med kolon (':') och ett fel upptäcks skrivs ett meddelande till standardfel med: | ||
* | |||
* Programnamnet (värdet av $0) | |||
* Den okända flaggan eller saknade flaggargumentet | |||
</pre> | |||
== | == UTDATAFILAR == | ||
<pre> | |||
Inga. | Inga. | ||
</pre> | |||
== UTFÖRLIG BESKRIVNING == | == UTFÖRLIG BESKRIVNING == | ||
Ingen | <pre> | ||
Ingen. | |||
</pre> | |||
== | == RETURSTATUS == | ||
0 | <pre> | ||
0 En flagga hittades (även om den är ogiltig). | |||
>0 Inga fler flaggor eller fel uppstod. | |||
</pre> | |||
== KONSEKVENSER VID FEL == | == KONSEKVENSER VID FEL == | ||
Standard. | <pre> | ||
Standard. | |||
<i>Följande avsnitt är informativa.</i> | |||
</pre> | |||
== ANVÄNDNING == | == ANVÄNDNING == | ||
Eftersom < | <pre> | ||
Eftersom <i>getopts</i> påverkar det aktuella skalet är det vanligtvis inbyggt. Om det används i en subshell, som: | |||
(getopts abc värde "$@") | |||
nohup getopts ... | |||
find . -exec getopts ... \; | |||
så påverkas inte skalets variabler. | |||
Shell-funktioner delar <i>OPTIND</i> med det anropande skalet, vilket kan ge oförutsägbara resultat. | |||
</pre> | |||
== EXEMPEL == | == EXEMPEL == | ||
<pre> | <pre> | ||
Ett skript som tolkar flaggor: | |||
if [ - | aflag= | ||
bflag= | |||
fi | while getopts ab: namn | ||
if [ - | do | ||
case $namn in | |||
fi | a) aflag=1;; | ||
shift $((OPTIND - 1)) | b) bflag=1 | ||
bval="$OPTARG";; | |||
?) printf "Användning: %s: [-a] [-b värde] args\n" "$0" | |||
exit 2;; | |||
esac | |||
done | |||
if [ ! -z "$aflag" ]; then | |||
printf "Flagga -a angavs\n" | |||
fi | |||
if [ ! -z "$bflag" ]; then | |||
printf 'Flagga -b "%s" angavs\n' "$bval" | |||
fi | |||
shift $(($OPTIND - 1)) | |||
printf "Återstående argument: %s\n$*" | |||
</pre> | </pre> | ||
== | == MOTIV == | ||
< | <pre> | ||
<i>getopts</i> valdes före <i>getopt</i> eftersom det hanterar argument med blanksteg bättre. <i>OPTARG</i> nämns inte som miljövariabel eftersom den inte påverkar körningen, endast resultatet. | |||
Kolontecknet (':') används först i <i>optsträng</i> för att ändra felhanteringen. Det ersätter äldre användning av variabeln <i>OPTERR</i>. | |||
Exakt felmeddelandeformat specificeras inte, men ska inkludera programnamn, flaggtecken och feltyp. | |||
</pre> | |||
== FRAMTIDA | == FRAMTIDA RIKTNINGAR == | ||
Inga | <pre> | ||
Inga. | |||
</pre> | |||
== SE ÄVEN == | == SE ÄVEN == | ||
<pre> | |||
[[getopt(3p)]] | [[getopt(3p)]] | ||
[[pax(1p)]] | [[pax(1p)]] | ||
POSIX.1‐2017: | |||
- Kapitel 8, "Environment Variables" | |||
- Avsnitt 12.2, "Utility Syntax Guidelines" | |||
- Avsnitt 2.5.2, "Special Parameters" | |||
</pre> | |||
== COPYRIGHT == | == COPYRIGHT == | ||
<pre> | |||
Delar av denna text är återgivna från IEEE Std 1003.1-2017 och The Open Group Base Specifications Issue 7, 2018 Edition. | |||
Vid avvikelser gäller den officiella versionen från IEEE och The Open Group: | |||
http://www.opengroup.org/unix/online.html | |||
Rapportera formateringsfel: https://www.kernel.org/doc/man-pages/reporting_bugs.html | |||
</pre> | |||
= Sidslut = | = Sidslut = | ||
Versionen från 7 april 2025 kl. 07.30
getopts(1p)
NAMN
getopts — tolka flaggor till kommandoradsverktyg
SYNOPSIS
getopts optstr namn [argument ...]
BESKRIVNING
Kommandot <i>getopts</i> läser in flaggor och flaggargument från en lista med parametrar. Det följer riktlinjerna 3 till 10 i POSIX.1‐2017, avsnitt 12.2, "Utility Syntax Guidelines". Vid varje anrop sparas nästa flagga i skalvariabeln som anges av operanden <i>namn</i>, och indexet för nästa argument i variabeln <i>OPTIND</i>. När skalet startas sätts <i>OPTIND</i> till 1. Om flaggan kräver ett argument, placeras detta i skalvariabeln <i>OPTARG</i>. Om ingen flagga hittas, eller om flaggan inte har ett argument, kommer <i>OPTARG</i> inte att vara satt. Om ett tecken som inte ingår i <i>optsträng</i> hittas där en flagga förväntas, sätts <i>namn</i>-variabeln till frågetecknet <b>'?'</b>. Om första tecknet i <i>optsträng</i> är kolon <b>':'</b>, sätts <i>OPTARG</i> till det funna tecknet, annars skrivs ett felmeddelande till standard error och <i>OPTARG</i> sätts inte. Om ett flaggargument saknas: * Om <i>optsträng</i> börjar med kolon (<b>':'</b>), sätts <i>namn</i> till kolon och <i>OPTARG</i> till den funna flaggan. * Annars sätts <i>namn</i> till frågetecken, <i>OPTARG</i> avsätts och ett felmeddelande skrivs till standardfel. När flaggorna är slut returnerar kommandot ett värde större än noll. <i>OPTIND</i> sätts till index för första operanden eller <b>"$#"</b>+1 om inga operander finns. <i>namn</i>-variabeln sätts till frågetecken. Variablerna <i>OPTIND</i> och <i>OPTARG</i> påverkar det aktuella skalets miljö och exporteras inte som standard. Om <i>OPTIND</i> sätts till 1, kan nya argument användas.
FLAGGOR
Inga.
OPERANDER
Följande operander stöds:
optsträng
En sträng som innehåller flaggtecken. Om ett tecken följs av kolon (':'), krävs ett argument. Tecken som '?' och ':' ska inte användas. Tecken som inte är alfanumeriska kan ge oförutsägbara resultat.
namn
Namnet på en skalvariabel som sätts till den flagga som hittades.
Om argument anges till <i>getopts</i> kommer dessa att tolkas istället för skalets positionella parametrar.
STDIN
Används ej.
INDATAFILAR
Inga.
MILJÖVARIABLER
Följande miljövariabler påverkar körningen: LANG Standardvärde för andra internationaliseringsvariabler. LC_ALL Överskrider alla andra locale-inställningar. LC_CTYPE Påverkar tolkning av text (t.ex. multibyte-tecken). LC_MESSAGES Format och innehåll i felmeddelanden. NLSPATH Plats för meddelandekataloger. OPTIND Används av getopts som index för nästa argument.
ASYNKRONA HÄNDELSER
Standard.
STDOUT
Används ej.
STDERR
Om <i>optsträng</i> inte börjar med kolon (':') och ett fel upptäcks skrivs ett meddelande till standardfel med:
* Programnamnet (värdet av $0)
* Den okända flaggan eller saknade flaggargumentet
UTDATAFILAR
Inga.
UTFÖRLIG BESKRIVNING
Ingen.
RETURSTATUS
0 En flagga hittades (även om den är ogiltig). >0 Inga fler flaggor eller fel uppstod.
KONSEKVENSER VID FEL
Standard. <i>Följande avsnitt är informativa.</i>
ANVÄNDNING
Eftersom <i>getopts</i> påverkar det aktuella skalet är det vanligtvis inbyggt. Om det används i en subshell, som:
(getopts abc värde "$@")
nohup getopts ...
find . -exec getopts ... \;
så påverkas inte skalets variabler.
Shell-funktioner delar <i>OPTIND</i> med det anropande skalet, vilket kan ge oförutsägbara resultat.
EXEMPEL
Ett skript som tolkar flaggor:
aflag=
bflag=
while getopts ab: namn
do
case $namn in
a) aflag=1;;
b) bflag=1
bval="$OPTARG";;
?) printf "Användning: %s: [-a] [-b värde] args\n" "$0"
exit 2;;
esac
done
if [ ! -z "$aflag" ]; then
printf "Flagga -a angavs\n"
fi
if [ ! -z "$bflag" ]; then
printf 'Flagga -b "%s" angavs\n' "$bval"
fi
shift $(($OPTIND - 1))
printf "Återstående argument: %s\n$*"
MOTIV
<i>getopts</i> valdes före <i>getopt</i> eftersom det hanterar argument med blanksteg bättre. <i>OPTARG</i> nämns inte som miljövariabel eftersom den inte påverkar körningen, endast resultatet.
Kolontecknet (':') används först i <i>optsträng</i> för att ändra felhanteringen. Det ersätter äldre användning av variabeln <i>OPTERR</i>.
Exakt felmeddelandeformat specificeras inte, men ska inkludera programnamn, flaggtecken och feltyp.
FRAMTIDA RIKTNINGAR
Inga.
SE ÄVEN
[[getopt(3p)]] [[pax(1p)]] POSIX.1‐2017: - Kapitel 8, "Environment Variables" - Avsnitt 12.2, "Utility Syntax Guidelines" - Avsnitt 2.5.2, "Special Parameters"
COPYRIGHT
Delar av denna text är återgivna från IEEE Std 1003.1-2017 och The Open Group Base Specifications Issue 7, 2018 Edition. Vid avvikelser gäller den officiella versionen från IEEE och The Open Group: http://www.opengroup.org/unix/online.html Rapportera formateringsfel: https://www.kernel.org/doc/man-pages/reporting_bugs.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.