getopts(1p): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
 
(15 mellanliggande sidversioner av samma användare visas inte)
Rad 11: Rad 11:


== BESKRIVNING ==
== BESKRIVNING ==
<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.
Kommandot getopts 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 namn,
och indexet för nästa argument i variabeln OPTIND. När skalet startas sätts OPTIND 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 flaggan kräver ett argument, placeras detta i skalvariabeln OPTARG.
Om ingen flagga hittas, eller om flaggan inte har ett argument, kommer OPTARG 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 tecken som inte ingår i optsträng hittas där en flagga förväntas, sätts namn-variabeln till
frågetecknet '?'. Om första tecknet i optsträng är kolon ':', sätts OPTARG till det funna tecknet,
annars skrivs ett felmeddelande till standardfel och OPTARG avsätts.


Om ett flaggargument saknas:
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.
* Om optsträng börjar med kolon (':'), sätts namn till kolon och OPTARG till den funna flaggan.
* Annars sätts <i>namn</i> till frågetecken, <i>OPTARG</i> avsätts och ett felmeddelande skrivs till standardfel.
* Annars sätts namn till frågetecken, OPTARG avsätts och ett felmeddelande skrivs till standardfel.
 
När flaggorna är slut returnerar kommandot ett värde större än noll. OPTIND sätts till index
för första operanden eller "$#" + 1 om inga operander finns. namn-variabeln sätts till frågetecken.


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 OPTIND och OPTARG påverkar det aktuella skalets miljö och exporteras inte som standard.


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.
Om OPTIND sätts till 1, kan nya argument användas.
</pre>


== FLAGGOR ==
== FLAGGOR ==
Rad 36: Rad 43:


== OPERANDER ==
== OPERANDER ==
<pre>
 
Följande operander stöds:
Följande operander stöds:


optsträng   
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.
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   
namn   
    Namnet på en skalvariabel som sätts till den flagga som hittades.
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.
Om argument anges till getopts kommer dessa att tolkas istället för skalets positionella parametrar.
</pre>


== STDIN ==
== STDIN ==
Rad 54: Rad 62:


== INDATAFILAR ==
== INDATAFILAR ==
<pre>
Inga.
Inga.
</pre>


== MILJÖVARIABLER ==
== MILJÖVARIABLER ==
Rad 63: Rad 69:


LANG        Standardvärde för andra internationaliseringsvariabler.
LANG        Standardvärde för andra internationaliseringsvariabler.
LC_ALL      Överskrider alla andra locale-inställningar.
LC_ALL      Överskrider alla andra locale-inställningar.
LC_CTYPE    Påverkar tolkning av text (t.ex. multibyte-tecken).
LC_CTYPE    Påverkar tolkning av text (t.ex. multibyte-tecken).
LC_MESSAGES Format och innehåll i felmeddelanden.
LC_MESSAGES Format och innehåll i felmeddelanden.
NLSPATH    Plats för meddelandekataloger.
NLSPATH    Plats för meddelandekataloger.
OPTIND      Används av getopts som index för nästa argument.
OPTIND      Används av getopts som index för nästa argument.
</pre>
</pre>


== ASYNKRONA HÄNDELSER ==
== ASYNKRONA HÄNDELSER ==
<pre>
Standard.
Standard.
</pre>


== STDOUT ==
== STDOUT ==
Rad 86: Rad 85:


== STDERR ==
== STDERR ==
<pre>
Om optsträng inte börjar med kolon (':') och ett fel upptäcks skrivs ett meddelande till standardfel med:
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)
* Programnamnet ($0)
* Den okända flaggan eller saknade flaggargumentet
* Den okända flaggan eller saknade flaggargumentet
</pre>


== UTDATAFILAR ==
== UTDATAFILAR ==
<pre>
Inga.
Inga.
</pre>


== UTFÖRLIG BESKRIVNING ==
== UTFÖRLIG BESKRIVNING ==
<pre>
Ingen.
Ingen.
</pre>


== RETURSTATUS ==
== RETURSTATUS ==
<pre>
0    En flagga hittades (även om den är ogiltig).
0    En flagga hittades (även om den är ogiltig).
>0    Inga fler flaggor eller fel uppstod.
>0    Inga fler flaggor eller fel uppstod.
</pre>


== KONSEKVENSER VID FEL ==
== KONSEKVENSER VID FEL ==
Rad 113: Rad 104:
Standard.
Standard.


<i>Följande avsnitt är informativa.</i>
Följande avsnitt är informativa.
</pre>
</pre>


== ANVÄNDNING ==
== ANVÄNDNING ==
<pre>
 
Eftersom <i>getopts</i> påverkar det aktuella skalet är det vanligtvis inbyggt. Om det används i en subshell, som:
Eftersom getopts påverkar det aktuella skalet är det vanligtvis inbyggt.
Om det används i en subshell påverkas inte skalets variabler, t.ex.:


     (getopts abc värde "$@")
     (getopts abc värde "$@")
Rad 124: Rad 116:
     find . -exec getopts ... \;
     find . -exec getopts ... \;


så påverkas inte skalets variabler.
Shell-funktioner delar OPTIND med det anropande skalet,
 
vilket kan ge oförutsägbara resultat om båda använder getopts.
Shell-funktioner delar <i>OPTIND</i> med det anropande skalet, vilket kan ge oförutsägbara resultat.
</pre>


== EXEMPEL ==
== EXEMPEL ==
Rad 156: Rad 146:


== MOTIV ==
== 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>.
getopts valdes före getopt eftersom det hanterar argument med blanksteg bättre.
 
OPTARG nämns inte i MILJÖVARIABLER eftersom det är en utdata-variabel.
 
Kolontecknet (':') först i optsträng ändrar hur fel hanteras, och ersätter äldre OPTERR-variabel.
 
Exakt format på felmeddelanden är inte specificerat, men ska inkludera programnamn,
ogiltigt flaggtecken och feltyp, t.ex.:


Exakt felmeddelandeformat specificeras inte, men ska inkludera programnamn, flaggtecken och feltyp.
"%s: illegal option -- %c\n"
</pre>
"%s: option requires an argument -- %c\n"


== FRAMTIDA RIKTNINGAR ==
== FRAMTIDA RIKTNINGAR ==
<pre>
Inga.
Inga.
</pre>


== SE ÄVEN ==
== SE ÄVEN ==
<pre>
[[getopt(3p)]]
[[getopt(3p)]]
[[pax(1p)]]
[[pax(1p)]]
POSIX.1‐2017:
POSIX.1‐2017:
  - Kapitel 8, "Environment Variables"
- Kapitel 8, "Environment Variables"
  - Avsnitt 12.2, "Utility Syntax Guidelines"
- Avsnitt 12.2, "Utility Syntax Guidelines"
  - Avsnitt 2.5.2, "Special Parameters"
- 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.
Delar av denna text är återgivna från IEEE Std 1003.1-2017 och The Open Group Base Specifications Issue 7, 2018 Edition.


Rad 187: Rad 178:


Rapportera formateringsfel: https://www.kernel.org/doc/man-pages/reporting_bugs.html
Rapportera formateringsfel: https://www.kernel.org/doc/man-pages/reporting_bugs.html
</pre>


= Sidslut =
= Sidslut =

Nuvarande version från 7 april 2025 kl. 09.28

getopts(1p)

NAMN

getopts — tolka flaggor till kommandoradsverktyg

SYNOPSIS

getopts optstr namn [argument ...]

BESKRIVNING

Kommandot getopts 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 namn, och indexet för nästa argument i variabeln OPTIND. När skalet startas sätts OPTIND till 1.

Om flaggan kräver ett argument, placeras detta i skalvariabeln OPTARG. Om ingen flagga hittas, eller om flaggan inte har ett argument, kommer OPTARG inte att vara satt.

Om ett tecken som inte ingår i optsträng hittas där en flagga förväntas, sätts namn-variabeln till frågetecknet '?'. Om första tecknet i optsträng är kolon ':', sätts OPTARG till det funna tecknet, annars skrivs ett felmeddelande till standardfel och OPTARG avsätts.

Om ett flaggargument saknas:

  • Om optsträng börjar med kolon (':'), sätts namn till kolon och OPTARG till den funna flaggan.
  • Annars sätts namn till frågetecken, OPTARG avsätts och ett felmeddelande skrivs till standardfel.

När flaggorna är slut returnerar kommandot ett värde större än noll. OPTIND sätts till index för första operanden eller "$#" + 1 om inga operander finns. namn-variabeln sätts till frågetecken.

Variablerna OPTIND och OPTARG påverkar det aktuella skalets miljö och exporteras inte som standard.

Om OPTIND 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 getopts 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 optsträng inte börjar med kolon (':') och ett fel upptäcks skrivs ett meddelande till standardfel med:

  • Programnamnet ($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.

Följande avsnitt är informativa.

ANVÄNDNING

Eftersom getopts påverkar det aktuella skalet är det vanligtvis inbyggt. Om det används i en subshell påverkas inte skalets variabler, t.ex.:

   (getopts abc värde "$@")
   nohup getopts ...
   find . -exec getopts ... \;

Shell-funktioner delar OPTIND med det anropande skalet, vilket kan ge oförutsägbara resultat om båda använder getopts.

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

getopts valdes före getopt eftersom det hanterar argument med blanksteg bättre.

OPTARG nämns inte i MILJÖVARIABLER eftersom det är en utdata-variabel.

Kolontecknet (':') först i optsträng ändrar hur fel hanteras, och ersätter äldre OPTERR-variabel.

Exakt format på felmeddelanden är inte specificerat, men ska inkludera programnamn, ogiltigt flaggtecken och feltyp, t.ex.:

"%s: illegal option -- %c\n" "%s: option requires an argument -- %c\n"

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.