GETOPT(1) Comenzi utilizator GETOPT(1) NUME getopt - analizeaza opiunile de comanda (imbunatait) REZUMAT getopt ir-opiuni parametri getopt [opiuni] [--] ir-opiuni parametri getopt [opiuni] -o|--options ir-opiuni [opiuni] [--] parametri DESCRIERE getopt este utilizat pentru a descompune (analiza) opiunile din liniile de comanda pentru o analiza uoara de catre procedurile shell i pentru a verifica daca opiunile sunt valide. In acest scop, utilizeaza rutinele GNU getopt(3). Parametrii cu care este apelat getopt pot fi imparii in doua pari: opiunile care modifica modul in care getopt va efectua analiza ( opiuni i ir-opiuni din REZUMAT) i parametrii care trebuie analizai ( parametri din REZUMAT). A doua parte va incepe de la primul parametru care nu este un argument de opiune sau dupa prima apariie a lui ,,--". In cazul in care in prima parte nu se gasete nicio opiune ,,-o" sau ,,--opiuni", primul parametru din a doua parte este utilizat ca ir scurt de opiuni. Daca este definita variabila de mediu GETOPT_COMPATIBLE sau daca primul parametru nu este o opiune (nu incepe cu un ,,-", primul format din REZUMAT), getopt va genera o ieire compatibila cu cea a altor versiuni ale getopt(1). Acesta va efectua in continuare amestecarea parametrilor i va recunoate argumentele opionale (a se vedea seciunea COMPATIBILITATE pentru mai multe informaii). Implementarile tradiionale ale getopt(1) nu sunt capabile sa faca faa spaiilor albe i altor caractere speciale (specifice shell-ului) in argumente i in parametrii non-opiune. Pentru a rezolva aceasta problema, aceasta implementare poate genera o ieire inchisa intre ghilimele care trebuie din nou interpretata de shell (de obicei prin utilizarea comenzii eval). Acest lucru are ca efect pastrarea acelor caractere, dar trebuie sa apelai getopt intr-un mod care nu mai este compatibil cu alte versiuni (al doilea sau al treilea format din REZUMAT). Pentru a determina daca aceasta versiune imbunataita a getopt(1) este instalata, se poate utiliza o opiune speciala de testare (-T). OPIUNI -a, --alternative Permite ca opiunile lungi sa inceapa cu o singura ,,-". -l, --longoptions opiuni-lungi Opiunile lungi (cu mai multe caractere) care trebuie recunoscute. Se pot specifica mai multe nume de opiuni in acelai timp, separand numele cu virgule. Aceasta opiune poate fi data de mai multe ori, opiuni-lungi sunt cumulative. Fiecare nume de opiune lunga din opiuni-lungi poate fi urmat de doua puncte ,,:" pentru a indica ca are un argument obligatoriu i de doua puncte duble ,,::" pentru a indica ca are un argument opional. -n, --name nume-program Numele care va fi utilizat de rutinele getopt(3) atunci cand raporteaza erori. Reinei ca erorile din getopt(1) sunt in continuare raportate ca provenind de la getopt. -o, --options opiuni-scurte Opiunile scurte (un caracter) care trebuie recunoscute. Daca aceasta opiune nu este gasita, primul parametru din getopt care nu incepe cu ,,-" (i nu este un argument de opiune) este utilizat ca ir scurt de opiuni. Fiecare caracter de opiune scurta din opiuni-scurte poate fi urmat de un caracter de doua puncte ,,:" pentru a indica ca are un argument obligatoriu i de doua puncte duble ,,::" pentru a indica ca are un argument opional. Primul caracter din opiunile scurte poate fi ,,+" sau ,,-" pentru a influena modul in care sunt analizate opiunile i in care este generata ieirea (a se vedea seciunea MODURI DE SCANARE pentru detalii). -q, --quiet Dezactiveaza raportarea erorilor de catre getopt(3). -Q, --quiet-output Nu genereaza o ieire normala. Erorile sunt in continuare raportate de getopt(3), cu excepia cazului in care utilizai i -q. -s, --shell shell Stabilete conveniile de folosire a ghilimelelor la cele din shell. Daca opiunea -s nu este furnizata, se utilizeaza conveniile BASH. Argumentele valide sunt in prezent "sh", "bash", "csh" i "tcsh". -T, --test Testeaza daca getopt(1) este aceasta versiune imbunataita sau o versiune veche. Acest lucru nu genereaza niciun rezultat i stabilete starea de eroare la 4. Alte implementari ale getopt(1), precum i aceasta versiune, daca variabila de mediu GETOPT_COMPATIBLE este definita, vor returna ,,--" i starea de eroare 0. -u, --unquoted Nu pune rezultatul intre ghilimele. Reinei ca spaiile albe i caracterele speciale (care depind de shell) pot provoca haos in acest mod (la fel ca in cazul altor implementari getopt(1)). -h, --help Afieaza acest mesaj de ajutor i iese. -V, --version Afieaza versiunea i iese. ANALIZAREA Aceasta seciune specifica formatul celei de-a doua pari a parametrilor din getopt (parametrii parametrii din REZUMAT). Urmatoarea seciune (IEIRE) descrie rezultatul generat. Aceti parametri erau, de obicei, parametrii cu care a fost apelata o funcie shell. Trebuie avut grija ca fiecare parametru cu care a fost apelata funcia shell sa corespunda exact unui parametru din lista de parametri din getopt (a se vedea EXEMPLE). Toate analizele sunt efectuate de rutinele GNU getopt(3). Parametrii sunt analizai de la stanga la dreapta. Fiecare parametru este clasificat ca fiind o opiune scurta, o opiune lunga, un argument pentru o opiune sau un parametru neopional. O opiune scurta simpla este un caracter ,,-" urmat de un caracter scurt de opiune, cu excepia caracterelor ,,:", ,,;" i ,,?", deoarece acestea sunt rezervate de getopt(3). In cazul in care opiunea are un argument obligatoriu, acesta poate fi scris direct dupa caracterul de opiune sau ca urmatorul parametru (adica separat de spaiu alb in linia de comanda). In cazul in care opiunea are un argument opional, acesta trebuie scris direct dupa caracterul de opiune, daca este prezent. Este posibil sa se precizeze mai multe opiuni scurte dupa un "-", atata timp cat toate (cu excepia, eventual, a ultimei opiuni) nu au argumente obligatorii sau opionale. O opiune lunga incepe in mod normal cu ,,--" urmate de numele opiunii lungi. In cazul in care opiunea are un argument obligatoriu, acesta poate fi scris direct dupa numele lung al opiunii, separat de ,,="" sau ca urmatorul argument (adica separat de spaiu alb in linia de comanda). Daca opiunea are un argument opional, acesta trebuie scris direct dupa numele lung al opiunii, separat de ,,=", daca este prezent (daca adaugai ,,=", dar nu adaugai nimic in spatele lui, este interpretat ca i cum nu ar fi prezent niciun argument; aceasta este o mica eroare, a se vedea ERORI). Opiunile lungi pot fi prescurtate, atata timp cat abrevierea nu este ambigua. Fiecare parametru care nu incepe cu ,,-" i care nu este un argument obligatoriu al unei opiuni anterioare este un parametru neopional. Fiecare parametru care urmeaza dupa un parametru ,,--" este intotdeauna interpretat ca un parametru neopional. In cazul in care este definita variabila de mediu POSIXLY_CORRECT sau in cazul in care irul scurt de opiuni a inceput cu ,,+", toi parametrii ramai sunt interpretai ca fiind parametrii neopionalii imediat ce este gasit primul parametru neopional. IEIRE Se genereaza o ieire pentru fiecare element descris in seciunea anterioara. Ieirea se face in aceeai ordine in care sunt specificate elementele la intrare, cu excepia parametrilor neopionali. Ieirea se poate face in modul compatibil (fara-ghilimele) sau in aa fel incat spaiile albe i alte caractere speciale din argumente i parametrii neopionali sa fie pastrate (a se vedea PUNEREA INTRE GHILIMELE). Atunci cand ieirea este procesata in scriptul shell, aceasta va parea compusa din elemente distincte care pot fi procesate una cate una (prin utilizarea comenzii shift in majoritatea limbajelor shell). Acest lucru este imperfect in modul ,,fara-ghilimele", deoarece elementele pot fi divizate in locuri neateptate daca conin spaii albe sau caractere speciale. In cazul in care exista probleme de analiza a parametrilor, de exemplu, pentru ca un argument necesar nu este gasit sau o opiune nu este recunoscuta, se va raporta o eroare la ieirea de eroare standard, nu va exista nicio ieire pentru elementul in neregula i se va returna o stare de eroare diferita de zero. Pentru o opiune scurta, un singur caracter ,,-" i caracterul opiunii sunt generate ca un singur parametru. In cazul in care opiunea are un argument, urmatorul parametru va fi argumentul. Daca opiunea are un argument opional, dar nu a fost gasit niciunul, urmatorul parametru va fi generat, dar va fi gol in modul cu ghilimele, dar nu va fi generat un al doilea parametru in modul fara ghilimele (compatibil). Reinei ca multe alte implementari getopt(1) nu accepta argumente opionale. In cazul in care mai multe opiuni scurte au fost specificate dupa un singur "-", fiecare dintre ele va fi prezenta la ieire ca un parametru separat. Pentru o opiune lunga, "--" i numele complet al opiunii sunt generate ca un singur parametru. Acest lucru se face indiferent daca opiunea a fost prescurtata sau a fost specificata cu un singur "-" la intrare. Argumentele sunt tratate ca in cazul opiunilor scurte. In mod normal, nu se genereaza nicio ieire din parametrii fara opiuni pana cand nu au fost generate toate opiunile i argumentele acestora. Apoi se genereaza ,,--" ca un singur parametru, dupa care se genereaza parametrii neopionali in ordinea in care au fost gasii, fiecare ca un parametru separat. Numai in cazul in care primul caracter al irului scurt de opiuni a fost un ,,-", se genereaza ieirea parametrilor neopionali in locul in care sunt gasii in intrare (acest lucru nu este acceptat daca se utilizeaza primul format al REZUMAT; in acest caz, toate apariiile anterioare ale lui ,,-" i ,,+" sunt ignorate). PUNEREA INTRE GHILIMELE In modul de compatibilitate, spaiile albe sau caracterele ,,speciale" din argumente sau parametrii neopionali nu sunt tratate corect. Pe masura ce ieirea este transmisa scriptului shell, scriptul nu tie cum ar trebui sa imparta ieirea in parametri separai. Pentru a ocoli aceasta problema, aceasta implementare ofera posibilitatea punerii intre ghilimele. Ideea este ca ieirea este generata cu ghilimele in jurul fiecarui parametru. Atunci cand aceasta ieire este din nou transmisa catre shell (de obicei printr-o comanda eval), ea este imparita corect in parametri separai. Punerea intre ghilimele nu este activata daca variabila de mediu GETOPT_COMPATIBLE este definita, daca se utilizeaza prima forma a lui din REZUMAT sau daca se intalnete opiunea ,,-u". Diferite shell-uri folosesc convenii de punere intre ghilimele (folosire a ghilimelelor) diferite. Putei utiliza opiunea ,,-s" pentru a selecta shell-ul pe care il utilizai. In prezent, sunt acceptate urmatoarele shell-uri: ,,sh", ,,bash", ,,csh" i ,,tcsh". De fapt, se disting doar doua ,,arome": convenii de punere intre ghilimele de tip <> i convenii de punere intre ghilimele de tip <>. Exista anse ca, daca folosii un alt limbaj de script shell, sa putei folosi in continuare una dintre aceste arome (variante). MODURI DE SCANARE Primul caracter al irului scurt de opiuni poate fi un ,,-" sau un ,,+" pentru a indica un mod special de scanare. In cazul in care se utilizeaza prima forma de apelare din REZUMAT, acestea sunt ignorate; totui, variabila de mediu POSIXLY_CORRECT este in continuare examinata. In cazul in care primul caracter este ,,+" sau daca este definita variabila de mediu POSIXLY_CORRECT, analizarea se oprete imediat ce se gasete primul parametru neopional (adica un parametru care nu incepe cu ,,-") care nu este un argument opional. Parametrii ramai sunt interpretai toi ca fiind parametri neopionali. In cazul in care primul caracter este un ,,-", parametrii neopionali sunt lasai in locul in care sunt gasii; in mod normal, toi parametrii sunt colectai la sfaritul ieirii dupa ce a fost generat un parametru ,,--". Reinei ca acest parametru ,,--" este in continuare generat, dar va fi intotdeauna ultimul parametru in acest mod. COMPATIBILITATE Aceasta versiune a getopt(1) este scrisa pentru a fi cat mai compatibila cu alte versiuni. De obicei, le putei inlocui pur i simplu cu aceasta versiune fara modificari i cu unele avantaje. In cazul in care primul caracter al primului parametru din getopt nu este un ,,-", getopt trece in modul de compatibilitate. Acesta va interpreta primul sau parametru ca fiind irul de opiuni scurte, iar toate celelalte argumente vor fi analizate. Acesta va continua sa amestece parametrii (adica toi parametrii care nu sunt opiuni sunt afiai la sfarit), cu excepia cazului in care variabila de mediu POSIXLY_CORRECT este definita, caz in care getopt va adauga automat un ,,+" inaintea opiunilor scurte. Variabila de mediu GETOPT_COMPATIBLE foreaza getopt in modul de compatibilitate. Definirea atat a acestei variabile de mediu, cat i a variabilei POSIXLY_CORRECT ofera compatibilitate 100% pentru programele ,,dificile". De obicei, insa, niciuna dintre ele nu este necesara. In modul de compatibilitate, caracterele ,,-" i ,,+" din irul scurt de opiuni sunt ignorate. CODURI DE IEIRE getopt returneaza codul de eroare 0 in cazul unei analizari reuite, 1 in cazul in care getopt(3) returneaza erori, 2 in cazul in care nu-i inelege proprii parametri, 3 in cazul unei erori interne, cum ar fi epuizarea memoriei, i 4 in cazul in care este apelat cu -T. EXEMPLE Scripturile de exemplu pentru (ba)sh i (t)csh sunt furnizate impreuna cu distribuia getopt(1) i sunt instalate in directorul /usr/share/doc/util-linux. MEDIU POSIXLY_CORRECT Aceasta variabila de mediu este examinata de rutinele getopt(3). Daca este definita, analizarea se oprete imediat ce se gasete un parametru care nu este o opiune sau un argument de opiune. Toi parametrii ramai sunt, de asemenea, interpretai ca parametri care nu sunt opiuni, indiferent daca incep cu "-". GETOPT_COMPATIBLE Foreaza getopt sa utilizeze primul format de apelare, aa cum este specificat in REZUMAT. ERORI getopt(3) poate analiza opiunile lungi cu argumente opionale care primesc un argument opional gol (dar nu poate face acest lucru pentru opiunile scurte). Acest getopt(1) trateaza argumentele opionale care sunt goale ca i cum nu ar fi prezente. Sintaxa, in cazul in care nu dorii nicio variabila de opiune scurta nu este foarte intuitiva (trebuie sa le definii in mod explicit la irul gol). AUTOR Frodo Looijaard CONSULTAI I bash(1), tcsh(1), getopt(3) RAPORTAREA ERORILOR Pentru rapoarte de eroare, folosii sistemul de urmarire al erorilor . DISPONIBILITATE Comanda getopt face parte din pachetul util-linux care poate fi descarcat de la Linux Kernel Archive . util-linux 2.41.2 2025-09-22 GETOPT(1)