GETOPT(1) Anvandarkommandon GETOPT(1) NAMN getopt - tolka kommandoval (forbattrad) SYNOPSIS getopt optstring parametrar getopt [flaggor] [--] optstring parameters getopt [flaggor] -o|--options optstring [flaggor] [--] parameters BESKRIVNING getopt anvands for att dela upp (parsa) flaggor i kommandorader sa att de enkelt kan analyseras av skalprocedurer och for att kontrollera om flaggor ar giltiga. For detta andamal anvands GNU getopt(3)-rutinerna. De parametrar som getopt anropas med kan delas in i tva delar: flaggor som andrar hur getopt ska utfora tolkningen (options och optstring i SYNOPSIS) och de parametrar som ska tolkas (parameters i SYNOPSIS). Den andra delen borjar vid den forsta parametern som inte ar en flagga och som inte ar ett flaggargument, eller efter den forsta forekomsten av '--'. Om ingen '-o' eller '--options'-flagga hittas i den forsta delen, anvands den forsta parametern i den andra delen som den korta flaggstrangen. Om miljovariabeln GETOPT_COMPATIBLE ar installd, eller om den forsta parametern inte ar en flagga (borjar inte med '-', det forsta formatet i SYNOPSIS), kommer getopt att generera utdata som ar kompatibla med utdata fran andra versioner av getopt(1). Den kommer fortfarande att blanda parametrar och kanna igen valfria argument (se avsnittet KOMPATIBILITET for mer information). Traditionella implementationer av getopt(1) klarar inte av att hantera blanksteg och andra (shell-specifika) specialtecken i argument och parametrar som inte ar optioner. For att losa detta problem kan denna implementation generera citerad utdata som aterigen maste tolkas av skalet (vanligtvis med kommandot eval). Detta innebar att dessa tecken bevaras, men du maste anropa getopt pa ett satt som inte langre ar kompatibelt med andra versioner (det andra eller tredje formatet i SYNOPSIS). For att avgora om denna forbattrade version av getopt(1) ar installerad, kan en speciell testflagga (-T) anvandas. FLAGGOR -a, --alternative Tillat att langa flaggor borjar med ett enda '-'. -l, --longoptions longopts The long (multi-character) options to be recognized. More than one option name may be specified at once, by separating the names with commas, whitespace (spaces, tabs, or newlines). This option may be given more than once, the longopts are cumulative. Each long option name in longopts may be followed by one colon to indicate it has a required argument, and by two colons to indicate it has an optional argument. -n, --name progname Det namn som kommer att anvandas av getopt(3)-rutinerna nar de rapporterar fel. Observera att fel i getopt(1) fortfarande rapporteras som att de kommer fran getopt. -o, --options shortopts De korta (ett tecken langa) flaggor som ska identifieras. Om denna flagga inte hittas, anvands den forsta parametern i getopt som inte borjar med '-' (och som inte ar ett flaggargument) som strang for korta flaggor. Varje kort flaggtecken i shortopts kan foljas av ett kolon for att ange att det har ett obligatoriskt argument, och av tva kolon for att ange att det har ett valfritt argument. Det forsta tecknet i shortopts kan vara '+' eller '-' for att paverka hur flaggorna analyseras och utdata genereras (se avsnittet SCANNINGSMODER for mer information). -q, --quiet Inaktivera felrapportering fran getopt(3). -Q, --quiet-output Genererar inte normal utdata. Fel rapporteras fortfarande av getopt(3), savida du inte ocksa anvander -q. -s, --shell skal Stall in citatkonventionerna till de som anvands i skal. Om flaggan -s inte anges anvands BASH-konventionerna. Giltiga argument ar for narvarande 'sh', 'bash', 'csh' och 'tcsh'. -T, --test Testa om din getopt(1) ar denna forbattrade version eller en gammal version. Detta genererar ingen utdata och satter felstatusen till 4. Andra implementationer av getopt(1), och den har versionen om miljovariabeln GETOPT_COMPATIBLE ar installd, returnerar '--' och felstatus 0. -u, --unquoted Citera inte utdata. Observera att blanksteg och specialtecken (beroende pa skalet) kan orsaka problem i det har laget (precis som i andra getopt(1)-implementeringar). -U, --unknown Leave unknown options as they are and suppress error messages from getopt(3). Since there is no way to know whether an unknown option requires an argument, a non-option argument that follows the unknown option after a whitespace, is considered an option argument, therefore the argument will be left untouched and printed next to the respective unknown option. To prevent unexpected behavior, short options should be specified individually. -h, --help Visa hjalptext och avsluta. -V, --version Visa version och avsluta. PARSING I detta avsnitt anges formatet for den andra delen av parametrarna i getopt (parametrarna i SYNOPSIS). I nasta avsnitt (OUTPUT) beskrivs den utdata som genereras. Dessa parametrar var typiskt de parametrar som en skalfunktion anropades med. Man maste vara noga med att varje parameter som skalfunktionen anropades med motsvarar exakt en parameter i parameterlistan for getopt (se EXEMPLES). All parsning gors av GNU:s getopt(3)-rutiner. Parametrarna analyseras fran vanster till hoger. Varje parameter klassificeras som en kort flagga, en lang flagga, ett argument till en flagga eller en parameter som inte ar en flagga. En enkel kort flagga ar ett '-' foljt av ett kort flaggtecken, med undantag for tecknen ':', ';' och '?', eftersom dessa reserveras av getopt(3). Om flaggan har ett obligatoriskt argument kan det skrivas direkt efter flaggtecknet eller som nasta parameter (d.v.s. separerat med blanksteg pa kommandoraden). Om flaggan har ett valfritt argument maste det skrivas direkt efter flaggtecknet om det finns. Det ar mojligt att ange flera korta flaggor efter ett "-", sa lange som alla (utom mojligen det sista) inte har obligatoriska eller valfria argument. En lang flagga inleds normalt med "--" foljt av det langa flaggnamnet. Om flaggan har ett obligatoriskt argument kan det skrivas direkt efter det langa flaggnamnet, avgransat med '=', eller som nasta argument (dvs. avgransat med blanksteg pa kommandoraden). Om flaggan har ett valfritt argument maste det skrivas direkt efter det langa flaggnamnet, separerat med '=', om det finns (om du lagger till '=' men inget efter det tolkas det som om inget argument fanns; detta ar ett litet fel, se KANDA PROBLEM). Langa flaggor kan forkortas, sa lange forkortningen inte ar tvetydig. Varje parameter som inte borjar med "-" och som inte ar ett obligatoriskt argument for en tidigare flagga ar en icke-flaggparameter. Varje parameter efter en '--'-parameter tolkas alltid som en icke-flaggparameter. Om miljovariabeln POSIXLY_CORRECT ar installd, eller om den korta flaggstrangen borjade med '+', tolkas alla aterstaende parametrar som icke-flagga sa snart den forsta icke-flaggparametern hittas. UTFLODE Utdata genereras for varje element som beskrivs i foregaende avsnitt. Utmatningen sker i samma ordning som elementen specificeras i indata, med undantag for parametrar som inte ar flaggor. Utmatningen kan goras i kompatibelt (icke-citerat) lage, eller pa ett sadant satt att blanksteg och andra specialtecken i argument och icke-optionsparametrar bevaras (se CITERING). Nar utdata bearbetas i skalskriptet kommer det att se ut som om det bestar av distinkta element som kan bearbetas ett efter ett (genom att anvanda kommandot shift i de flesta skalsprak). Detta ar inte perfekt i okommenterat lage, eftersom element kan delas upp pa ovantade stallen om de innehaller blanksteg eller specialtecken. Om det uppstar problem med att analysera parametrarna, t.ex. for att ett obligatoriskt argument inte hittas eller en flagga inte kanns igen, rapporteras ett fel pa stderr, ingen utdata for det felaktiga elementet och en felstatus som inte ar noll returneras. For en kort flagga genereras ett enda '-' och flaggtecknet som en parameter. Om flaggan har ett argument, kommer nasta parameter att vara argumentet. Om flaggan tar ett valfritt argument, men inget hittades, kommer nasta parameter att genereras men vara tom i citerande lage, men ingen andra parameter kommer att genereras i okvoterat (kompatibelt) lage. Observera att manga andra getopt(1)-implementeringar inte stoder valfria argument. Om flera korta flaggor anges efter ett enda "-", kommer varje flagga att visas som en separat parameter i utdata. For en lang flagga genereras "--" och det fullstandiga namnet pa flaggan som en parameter. Detta gors oavsett om flaggan forkortades eller angavs med ett enda '-' i indata. Argumenten hanteras pa samma satt som for korta flaggor. Normalt genereras ingen utdata for parametrar som inte ar flaggor forran alla flaggor och deras argument har genererats. Da genereras "--" som en enda parameter och darefter parametrarna for icke-flaggor i den ordning de hittades, var och en som en separat parameter. Endast om det forsta tecknet i den korta optionsstrangen var ett '-' genereras utdata for icke-optionsparametrar pa den plats dar de finns i indata (detta stods inte om det forsta formatet for SYNOPSIS anvands; i sa fall ignoreras alla foregaende forekomster av '-' och '+'). CITAT I kompatibilitetslaget hanteras inte blanksteg eller "specialtecken" i argument eller parametrar som inte ar flaggor korrekt. Nar utdata matas in i skalskriptet vet inte skriptet hur det ska dela upp utdata i separata parametrar. For att kringga detta problem erbjuder denna implementation quoting. Tanken ar att utdata genereras med citattecken runt varje parameter. Nar denna utdata aterigen matas till skalet (vanligtvis med ett eval-kommando) delas den upp korrekt i separata parametrar. Quoting aktiveras inte om miljovariabeln GETOPT_COMPATIBLE ar installd, om den forsta formen av SYNOPSIS anvands eller om flaggan "-u" hittas. Olika skal anvander olika citeringskonventioner. Du kan anvanda flaggan "-s" for att valja det skal du anvander. Foljande skal stods for narvarande: 'sh', 'bash', 'csh' och 'tcsh'. Egentligen skiljer man bara pa tva "smaker": sh-liknande citeringskonventioner och csh-liknande citeringskonventioner. Om du anvander ett annat skalskriptsprak ar chansen stor att du anda kan anvanda nagon av dessa varianter. SKANNINGSMODELLER Det forsta tecknet i den korta optionsstrangen kan vara ett '-' eller ett '+' for att ange ett speciellt skanningslage. Om den forsta anropsformen i SYNOPSIS anvands ignoreras de; miljovariabeln POSIXLY_CORRECT undersoks dock fortfarande. Om det forsta tecknet ar '+', eller om miljovariabeln POSIXLY_CORRECT ar installd, stoppas parsningen sa snart den forsta icke-flaggparametern (dvs. en parameter som inte borjar med '-') hittas som inte ar ett flaggargument. De aterstaende parametrarna tolkas alla som icke-flaggparametrar. Om det forsta tecknet ar en "-", matas parametrar som inte ar flaggor ut pa den plats dar de finns; i normal drift samlas de alla i slutet av utmatningen efter att en "--"-parameter har genererats. Observera att denna "--"-parameter fortfarande genereras, men den kommer alltid att vara den sista parametern i detta lage. KOMPATIBILITET Den har versionen av getopt(1) ar skriven for att vara sa kompatibel som mojligt med andra versioner. Vanligtvis kan du bara ersatta dem med den har versionen utan nagra andringar, och med vissa fordelar. Om det forsta tecknet i den forsta parametern i getopt inte ar ett '-', gar getopt in i kompatibilitetslage. Den tolkar sin forsta parameter som en strang med korta flaggor och alla andra argument analyseras. Det kommer fortfarande att blanda parametrar (dvs. alla parametrar som inte ar flaggor kommer att matas ut i slutet), savida inte miljovariabeln POSIXLY_CORRECT ar installd, i vilket fall getopt automatiskt lagger till ett '+' fore korta flaggor. Miljovariabeln GETOPT_COMPATIBLE tvingar getopt till kompatibilitetslage. Om du staller in bade denna miljovariabel och POSIXLY_CORRECT far du 100% compatibilitet for "svara" program. Vanligtvis behovs dock ingen av dem. I kompatibilitetslaget ignoreras ledande '-' och '+'-tecken i den korta optionsstrangen. RETURN-KODER getopt returnerar felkod 0 for lyckad parsning, 1 om getopt(3) returnerar fel, 2 om den inte forstar sina egna parametrar, 3 om ett internt fel intraffar, t.ex. out-of-memory, och 4 om den anropas med -T. EXEMPEL Exempelskript for (ba)sh och (t)csh tillhandahalls med getopt(1)-distributionen och installeras i katalogen /usr/share/doc/util-linux. MILJO POSIXLY_CORRECT Denna miljovariabel undersoks av rutinerna getopt(3). Om den ar installd stoppas parsningen sa snart en parameter hittas som inte ar en flagga eller ett flaggargument. Alla aterstaende parametrar tolkas ocksa som icke-flaggparametrar, oavsett om de borjar med '-' eller inte. GETOPT_COMPATIBLE Tvingar getopt att anvanda det forsta anropsformatet enligt vad som anges i SYNOPSIS. KANDA PROBLEM getopt(3) kan analysera langa flaggor med valfria argument som ges ett tomt valfritt argument (men kan inte gora detta for korta flaggor). Denna getopt(1) behandlar valfria argument som ar tomma som om de inte fanns. Syntaxen om du inte vill ha nagra short option-variabler alls ar inte sarskilt intuitiv (du maste uttryckligen stalla in dem till den tomma strangen). FORFATTARE Frodo Looijaard SE AVEN bash(1), tcsh(1), getopt(3) FELRAPPORTERING For felrapporter, anvand felhanteraren . TILLGANGLIGHET Kommandot getopt ingar i paketet util-linux som kan hamtas fran Linux Kernel Archive . util-linux 2.42.1 2026-05-18 GETOPT(1)